mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
dispatch-2 client-reliability-3: verify landings and route reproduced obsolete probe bug
This commit is contained in:
1 parent
f9adfc8f53
commit
03766d39ef
9 files changed
+71
-56
No files matched your search
@@ -0,0 +1,6 @@
|
||||
# Next bounded task and coordination qualification
|
||||
|
||||
- Keep one worker; prior test tasks done, product grid-health scope is now isolated.
|
||||
- Require actual observer-to-probe lifecycle reproduction, not source-extracted queue inspection. Dispatch sees1 obsolete start after grid disposal, expected0.
|
||||
- Bound fix to queued work. Shared live owners and later requests must survive; cancelled work must not populate negative cache.
|
||||
- Mailbox files are delivery/storage, not wakeup. Record missing automatic dispatch continuation and require explicit completion evidence; no unattended qualification, scheduler or kit change.
|
||||
+2
-5
@@ -2,11 +2,8 @@
|
||||
|
||||
## dispatch
|
||||
|
||||
- 2026-10-19 checkpoint: reviewed dbdac18d/6da037f5, independently verified profile-modal27/27 in2.46s and isolated race assertion62ms/process timeout10s. Routed client-reliability-2 to the existing worker for one-test harness cleanup. Preserve separate commits and normal full gates; no preview rebuild before verified landing.
|
||||
|
||||
- 2026-10-19: dispatch-1 startup goal and one-worker proposal landed at fa538097; preparation complete. Baseline at d9059116: lint 11/11, unit run completed 219 files before profile-modal suite timed out at 60s; isolated unrestricted rerun reproduced timeout; 205 files remain untested. fleet/TEAM-PROPOSAL.md proposes one client-reliability worker for this blocker, with queued torrent-probe lifetime as a later candidate. Await first-worker approval before adding/launching it. No product edits or workers started.
|
||||
|
||||
- 2026-10-19: dispatch-2: first worker approved through desktop-chat relay, routine local work authorized within GOAL. Roster landed at 9e6c310d and client-reliability worker launched in its own tmux window (pid 138193); fleet-bitvid:preview on port 3000 preserved (HTTP 200). Next: monitor blocker/fix evidence, normal landings, and refresh preview after verified product changes. A clean NODE_TEST_CONTEXT-free isolated reproduction also timed out at 60s; one-time roster-only validation is recorded in PROGRAM.md. No product fixes landed yet.
|
||||
- 2026-10-19: dispatch-2 ongoing coordination. Synced to f9adfc8f; normal-gate fixes de6918ce verified (425/425 file evidence, lint11/11, independent profile27/27/race1/1). Route client-reliability-3 to same worker for reproduced queued probe-after-feed-disposal bug; scope/evidence in area prompt. Next: verify actual worker resume and completion reports, keep preview current after verified product landing.
|
||||
- Coordination limitation: operator checkpoint resumed dispatch; file mailbox does not itself wake idle Codex. Completion handoff now explicitly requires mailbox evidence, but unattended dispatch wakeup is unqualified. No scheduler/kit changes at this checkpoint.
|
||||
|
||||
## client-reliability
|
||||
|
||||
|
||||
@@ -1,24 +1,10 @@
|
||||
# Resume brief — 2026-10-19 approved worker startup
|
||||
# Resume brief: 2026-10-19 client-facing follow-up
|
||||
|
||||
## Goal and authority
|
||||
Read PROGRAM and GOAL for scoped desktop-chat routine-work authority. No deploys, spending, production data, wallets or schedulers.
|
||||
|
||||
Read fleet/GOAL.md and PROGRAM.md. Robustness/usability/TODO work is authorized. First client-reliability worker and routine local staffing/fixes/tests/builds/landings approved through Codex desktop chat relay; no deploys, spending, production data, real-wallet operations, or schedulers.
|
||||
## Current state
|
||||
|
||||
## Mid-flight
|
||||
|
||||
| area | item | state | next step |
|
||||
| --- | --- | --- | --- |
|
||||
| dispatch | dispatch-2 | active coordination | roster landed 9e6c310d; one worker running; monitor results, owner updates, and preview refresh |
|
||||
| client-reliability | client-reliability-1 and client-reliability-2 | profile fix committed dbdac18d/6da037f5; follow-up routed | merge updated prompt; fix retained relay work in the race test, then normal full gate before landing |
|
||||
|
||||
## Evidence and local preview
|
||||
|
||||
Baseline product SHA d9059116; startup docs landed through 3e451aac. Lint 11/11; 219 unit files exited 0 before file 220 (profile-modal-controller) timed out at 60s; 205 files untested. Isolated unrestricted and clean-env reruns timed out. No client fix yet.
|
||||
|
||||
Preserve fleet-bitvid:preview serving dispatch dist at http://127.0.0.1:3000. After verified changes land, update dispatch from unstable and rebuild locally. No scheduler activation or extra worker launch implied.
|
||||
|
||||
## Bootstrap exception
|
||||
|
||||
One administrative roster/brief commit uses temporary exact-scope validation because the worker's assigned existing hang blocks full-suite completion. Persistent gate settings, product code, and tests must be unchanged. Subsequent code uses normal full gates. No additional owner approval pending within routine scope.
|
||||
|
||||
Latest checkpoint: independent profile-modal27/27 in2.46s. Worker full run226 file exits before race-suite retained relay work;198 untested. Independent isolated race assertion62ms, process timeout10s/exit124. Preview unchanged; no test fix landed yet.
|
||||
- Tests-only fixes1/2 normally landed de6918ce; closure f9adfc8f, both done. Durable status and unstable ancestry verified; full425/425 file evidence and lint11/11. Dispatch independently verified profile27/27, race1/1 natural exit and lint11/11. Dispatch synced.
|
||||
- Same single client-reliability worker next: item3, queued torrent-probe lifetime. Five-card actual badge/observer scenario:4 active +1 queued; dispose and remove grid, release active;1 obsolete start (expected0). Reproduce before fixing; preserve shared-owner checks, cache/inflight correctness, priority/concurrency and hidden reveal. Product scope and checks in current area prompt.
|
||||
- Preserve built-dist preview in fleet-bitvid:preview at http://127.0.0.1:3000. Dispatch rebuilds after verified product landings; current prior changes are test-only.
|
||||
- Completion requires a dispatch mailbox evidence event. File delivery does not wake an idle session; operator input currently resumes dispatch. Do not claim unattended monitoring or add scheduler/kit infrastructure in this checkpoint.
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "client-reliability-3",
|
||||
"area": "client-reliability",
|
||||
"status": "open",
|
||||
"title": "Cancel queued torrent health probes when their last feed owner is disposed",
|
||||
"blockedOn": null,
|
||||
"addedOn": "2026-10-19",
|
||||
"filedAt": "f9adfc8f531bcb77d4dc6e5487f76dbce0916167"
|
||||
}
|
||||
@@ -1,42 +1,30 @@
|
||||
# Area: Client reliability (`client-reliability`)
|
||||
# Area: Client reliability (client-reliability)
|
||||
|
||||
## Current bounded follow-up: client-reliability-2
|
||||
## Current assignment: client-reliability-3
|
||||
|
||||
Dispatch grants temporary ownership of tests/race/nostr-client-init-race.test.mjs, its Test Integrity Note, and client-reliability-2 backlog/notes. This extends the initial scope; no second worker or Nostr product-code ownership is granted. Merge unstable to receive this prompt and item before claiming it. Keep the existing profile-modal commits separate. Both items await normal full-gate success before landing.
|
||||
Improve robustness/usability with one bounded client-facing fix from pre-launch TODO #34 Stage3: cancel queued torrent health probes when the last card/feed owner is disposed. Prior items1 and2 are done, normally landed at de6918ce and closed at f9adfc8f (425/425 unit files, lint11/11). Do not redo them.
|
||||
|
||||
Evidence: race assertion passes in about 61ms but the process retains public-relay retries and exceeds isolated 10s/full-run 60s diagnostic bounds. Dispatch independently reproduced this (assertion 62ms, process exit124), and independently verified your profile-modal tree 27/27 in2.46s.
|
||||
## Current evidence
|
||||
|
||||
Inspect the real post-init subscription boundary and cleanup. Make the harness hermetic, preserve concurrent-init/pool-ready/post-init-subscription assertions, and exit naturally without public relay traffic or retry timers. Read docs/nips/01.md and relevant subscription/lifecycle documentation before Nostr-related investigation. Product Nostr code, shared helpers, and the global runner remain excluded; report exact evidence/file needs before broader edits.
|
||||
At f9adfc8f, dispatch ran /tmp/bitvid-dispatch-obsolete-probe-scenario.mjs. It imports actual gridHealth.js and torrentClient, uses real DOM cards and attachHealthBadges with a controllable IntersectionObserver, and replaces only the external probePeers boundary with deferred promises (no live network). Five cards enter: four probes start, one waits. Dispose the returned observer registration, remove feed DOM, then release active probes: one obsolete probe still starts, expected zero. The assertion fails with1!==0. This is stronger than the earlier isolated ProbeQueue class inspection; it is not a browser CPU or real-torrent measurement. Inspect the diagnostic for fixture details and reproduce against your own worktree before editing. Retain a proper regression in the repository.
|
||||
|
||||
No force-exit, unref-only masking, retries, added sleeps, loose assertions, quarantine, or timeout increases. A deterministic deferred barrier may replace the existing mock delay if appropriate. Pin the actual boundary with a regression and deliberately broken variant; record the integrity note. Run the race file to natural completion, the profile-modal suite, lint, and then full npm test with the existing diagnostic bound. Commit separately with client-reliability-2, merge unstable, verify that tree, and submit through unchanged normal landing gates once the full suite is green. Route any further unowned blocker with exact counts instead of broadening yourself.
|
||||
## Ownership for this item
|
||||
|
||||
## Role and first assignment
|
||||
Temporary explicit ownership: js/gridHealth.js; a small queue/owner helper if needed (prefer js/gridHealthQueue.js); focused lifecycle tests (prefer tests/grid-health-lifecycle.test.mjs); relevant existing grid-health tests and Test Integrity Note; your backlog/evidence/area notes. Existing js/dom/cardObserver.js already exposes onCardUnregister: use that boundary. Report specific evidence before editing that shared module or VideoListView lifecycle.
|
||||
|
||||
Improve client robustness and usability through small, reproducible fixes from the TODO backlog. Start with client-reliability-1: classify and fix the profile-modal controller suite hang, then report before picking a different subsystem. You are the only worker; dispatch owns staffing and priorities.
|
||||
Do not edit js/app.js, URL-health plumbing, js/webtorrent.js or vendor bundle, active-probe abort behavior, playback/magnet helpers, cache policy/TTLs, concurrency limits, signers, payments, styling, test runner, fleet config, or kit infrastructure. No other worker owns this bounded scope. No subagents needed.
|
||||
|
||||
At d9059116 (product unchanged by startup docs), `UNIT_TEST_TIMEOUT_MS=60000 npm test` completed 219 files, then tests/profile-modal-controller.test.mjs timed out as file 220/425. An isolated unrestricted run also timed out. The last started scenario was show()/hide() focus/wallet. Root cause is not classified. The dispatch shell inherited NODE_TEST_CONTEXT=child-v8, which explains binary test output; inspect a readable reporter and clean environment before calling this a product defect. A clean-environment reproduction is being checked at launch preparation.
|
||||
## Plan and done
|
||||
|
||||
## You own
|
||||
1. Read current RULE-CHANGES, PROGRAM, RESUME-BRIEF, KNOWN_ISSUES, AGENTS, repo memory and test integrity standard. Merge unstable, claim client-reliability-3, reproduce actual five-card lifecycle before edits, and record started/queued counts.
|
||||
2. Associate queued work with live card/feed owners. Disposing the last owner prevents the queued probe from starting; discarding one owner must not cancel shared work needed by a live card. Leave already-active probe behavior unchanged.
|
||||
3. Preserve deduplication, priority and current concurrency (four), healthy/negative TTLs, valid magnet bytes and WSS policy. Cancelled jobs must settle without creating unhealthy cache entries or deleting newer inflight entries. Later live cards must be able to request the same source. Disposed registrations must not receive stale UI effects.
|
||||
4. Test actual observer/queue/probe boundaries: last-owner disposal, two owners sharing a queued source, re-request after cancellation, concurrency/priority preservation, and a healthy hidden-card reveal path. Use controlled probes and no public relay/torrent traffic. Kill a deliberately broken variant for each new scenario or explain grouped mutant coverage; include integrity notes. No arbitrary sleeps/retries/relaxed assertions.
|
||||
5. Run focused suites, full npm test with the existing60s/file diagnostic bound, npm run lint, npm run build, and a local browser lifecycle/health smoke where available. This is product code: report browser/source-fallback verification and any gap honestly. Reserve the shared browser in .task. No CPU improvement claim without measurement; this item measures obsolete starts, not the entire performance plan.
|
||||
6. Commit with client-reliability-3, merge unstable (never rebase), verify merged tree, submit through unchanged normal landq, verify durable landed status and unstable ancestry, then close item. Route new out-of-scope failures to dispatch; do not weaken gates or broaden automatically.
|
||||
|
||||
- tests/profile-modal-controller.test.mjs and narrow profile-modal lifecycle/helper code required by the diagnosed defect, including js/ui/profileModalController.js and js/ui/profileModal/**.
|
||||
- Your backlog item, area notes, focused regression, and Test Integrity Note.
|
||||
## Completion handoff and operating limits
|
||||
|
||||
## You do NOT own
|
||||
Send a dispatch mailbox event when blocked, when code lands, and at final completion, including SHA, exact checks/counts, unverified behavior and next step. The generated startup message said to report only when blocked; the new assignment explicitly replaces that reporting instruction with landing/final-completion events as well. The previous completion left no unread dispatch event. File-mailbox delivery only records a message: it does not start a Codex turn or wake idle dispatch. The operator currently supplies the new turn/tmux input; do not claim unattended monitoring. No scheduler or kit changes in this task. No additional work after this item without routing.
|
||||
|
||||
js/app.js, js/app/**, signers/Nostr core, storage credentials, payments, global test discovery, fleet config/tools, styling, unrelated suites, or the preview server. Ask dispatch for a specific scope adjustment if evidence points outside ownership. Do not alter another worktree or process. No subagents needed.
|
||||
|
||||
## Done and checks
|
||||
|
||||
1. Read KNOWN_ISSUES.md, .agents/MEMORY.md, PROGRAM.md, RESUME-BRIEF.md, RULE-CHANGES.md, and docs/testing/test-integrity.md. Read your mailbox and claim client-reliability-1. Revalidate at HEAD.
|
||||
2. Reproduce the blocked await or retained resource at the actual boundary. Distinguish client behavior, harness assumptions, and environmental artifacts. Preserve every assertion and correct behavior; do not add retries/sleeps, raise timeouts, quarantine/delete tests, or force a successful process exit.
|
||||
3. Fix the cause with deterministic setup/cleanup or narrow client behavior as the evidence warrants. Add a scenario regression and prove a deliberately broken variant fails. Record a Test Integrity Note for test edits.
|
||||
4. Run the isolated suite to natural completion and the full unit suite with a 60s per-file diagnostic bound; also run npm run lint. Product code changes require npm run build and relevant local browser checks. Report file/test counts precisely and disclose what was not verified. Do not call the full suite green if it stops early.
|
||||
5. Commit with client-reliability-1 in the message using fleet commit, merge unstable (never rebase), validate that tree, and submit through landq. Close the item only after durable landed state and unstable verification. Return the SHA and exact checks to dispatch. Explain what slowed you down and one tool/data improvement if any.
|
||||
|
||||
## Standing rules
|
||||
|
||||
- 2026-10-19 owner direction: "lets try to work our way through some of the issues in the TODO backlog and find and bugs and generaly make the client more robust and usable. ."
|
||||
- Routine work launch approved through the Codex desktop chat relay; no deploys, spending, production data, real-wallet operations, or schedules.
|
||||
- Preserve the owner preview at http://127.0.0.1:3000 in fleet-bitvid:preview. Dispatch refreshes its built dist after verified changes land.
|
||||
- Send routine completion and blockers directly to dispatch via mailbox; dispatch sends owner event updates.
|
||||
- Keep .task current; acquire any shared browser convention through .task before browser work. Sandbox denial is not permission to bypass controls.
|
||||
Owner routine-work delegation was relayed from Codex desktop chat and recorded with provenance in PROGRAM. No deploys, spending, production data, real-wallet operations, or schedulers. Preserve fleet-bitvid:preview at http://127.0.0.1:3000; dispatch syncs and rebuilds after verified product changes land. Keep .task current, communicate directly via mailbox, and disclose tool/permission blockers without bypassing controls.
|
||||
@@ -25,3 +25,14 @@
|
||||
- Reviewed dbdac18d and 6da037f5: test-only computed-style fixture optimization plus native-style focus contract. All 26 original scenarios retain assertions, one contract added; product/fixture mutants fail per committed evidence. No browser defect established. Dispatch independently ran 27/27 in2.46s (exit0); worker lint11/11.
|
||||
- Full worker run: 226 file exits passed, race suite retained relay work after its assertion passed; 198 files untested. Dispatch isolated reproduction: assertion passed62ms, process timeout10s/exit124. No client fixes submitted or landed.
|
||||
- Assigned client-reliability-2 to same single worker: temporary ownership of one race test and regression/integrity notes. No Nostr product/global runner scope; preserve assertions, hermetic IO and natural exit, then normal full gates. No additional worker. Preview stays on verified unstable.
|
||||
|
||||
## 2026-10-19: Verified landings and next client-facing task
|
||||
|
||||
- Durable land_status confirms normal-gate landing de6918ce and closure f9adfc8f; both backlog items done. Inspected queue result: configured install+full npm test gate exit0. Worker recorded425/425 files and lint11/11; dispatch synced to f9adfc8f and independently ran profile27/27 in2.46s, race1/1 with natural15ms total exit, and lint11/11.
|
||||
- Next task client-reliability-3 assigned to same one worker: actual five-card attachHealthBadges/observer lifecycle reproduces one queued obsolete torrent probe starting after disposal and DOM removal (expected0). Deferred probe boundary only, no real network; script exit1 at intended assertion. Scope: queued ownership, shared live-owner preservation, cache/inflight correctness and hidden-card reveal; active/URL probes excluded.
|
||||
- Coordination review: implementation/validation/normal landing worked. Dispatch did not resume when worker finished; operator supplied this checkpoint. No unread completion message was present. The file-mailbox adapter only writes files and has no wake hook. Require worker completion/landing mailbox reports, but these still need an actual foreground turn/tmux input to resume dispatch. Unattended monitoring is not qualified.
|
||||
- Repeated friction / suggested future kit addition: event-driven dispatch wakeup on completion, with durable delivery/consumption evidence. Not implemented here; no scheduler or kit modifications authorized by this checkpoint.
|
||||
- Team remains2 agents including dispatch,1 worker. Owner outcome/reproduction event sent. Preview source has no product diff across landed test-only fixes; local build refresh is running without restarting the existing server.
|
||||
|
||||
- Reporting diagnosis: fleet resumePrompt says "Report to the session manager only if blocked", which explains the absent completion event. The next explicit tmux assignment will override that reporting instruction for landing/final completion without changing kit code. Delivery still does not wake dispatch; a separate operator turn remains necessary while dispatch is idle.
|
||||
- Preview refresh: npm run build exit0, deployment-artifact verification passed. Existing server process preserved; HTTP health check follows.
|
||||
@@ -9,6 +9,9 @@ a landing rule changes.
|
||||
|
||||
## 2026-10-19
|
||||
|
||||
- client-reliability-3 redirects the existing single worker to queued torrent-probe ownership in js/gridHealth.js, an optional small queue helper, and focused lifecycle tests. Prior validation tasks are done. Active probes, URL checks, WebTorrent implementation, cache/concurrency policy and kit remain out of scope. Completion must send dispatch mailbox evidence; mailbox delivery is not a session wakeup. No scheduler/kit changes.
|
||||
|
||||
|
||||
- Bounded routing: existing client-reliability worker temporarily owns tests/race/nostr-client-init-race.test.mjs plus its regression/integrity notes for client-reliability-2. Nostr product code and global runner remain excluded. Preserve assertions, separate commits, and normal landing gates.
|
||||
|
||||
- One-time first-worker bootstrap: the administrative roster/brief commit may land through a temporary queue configuration with an exact roster-and-documentation-only validator because the worker is assigned to the existing full-suite hang. No product/test/persistent-gate change is permitted by this check. Record the exception and actual result; subsequent code uses the normal full gate.
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Verified outcomes and probe baseline at f9adfc8f
|
||||
|
||||
- Durable land_status:683cedf0bf landedde6918ce;af16ee1d09 landedf9adfc8f. Queue result exact configured install+full npm test gate exit0. Both backlog records done.
|
||||
- Inspected worker final evidence:425/425 unit files, lint11/11, all4 mutants fail; no product source changes in fixes1/2. Full suite not repeated by dispatch.
|
||||
- Independent profile direct run:27/27,0fail,2464.92ms, natural exit0. Initial invocation included a second positional filename that Node did not execute as a script; race verified separately below.
|
||||
- Independent race direct run:1/1,0fail, scenario10.13ms,total15.07ms, natural exit0.
|
||||
- Independent npm run lint: exit0, all11 stages.
|
||||
- /tmp/bitvid-dispatch-obsolete-probe-scenario.mjs runs actual attachHealthBadges, DOM cards, controlled IntersectionObserver and deferred external probePeers.4 active, fifth queued; observer disposed and grid removed; releasing active starts1 obsolete queued probe. Assertion expected0/actual1, exit1 at intended assertion. No real torrent/network used. This is an integration-boundary reproduction, not browser CPU qualification.
|
||||
- git diff9e6c310d..f9adfc8f over product/build/source paths: empty. Local preview build refresh started separately; completion result to follow.
|
||||
- Not verified: new probe fix (not implemented yet), browser/source fallback, live signer/wallet/network, release/deploy. No scheduler/kit changes.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Local preview refresh at f9adfc8f
|
||||
|
||||
- npm run build: exit0. Build includes verify:dist:deploy-artifact and completed successfully. This refreshes dispatch dist served by the existing preview process; no deploy or server restart.
|
||||
- Prior independent checks on synced tree: profile27/27, race1/1 natural completion, lint11/11; normal lander full gate exit0 and worker425/425 evidence reviewed.
|
||||
- Not verified: new queue-lifetime fix, browser playback, production/release behavior. No kit/scheduler change.
|
||||
Reference in new issue
Block a user