[client-reliability] client-reliability-9 record HEAD retention reproduction

This commit is contained in:
thePR0M3TH3AN committed 2026-10-22 10:17:10 -04:00
1 parent c5b678f7c9
commit 145c09f7a6
6 files changed
+29 -2

No files matched your search

@@ -0,0 +1 @@
Client9 at c5b678f7; investigate HEAD owner cancellation only via actual observer/controller and controlled fetch. No product/retained tests/full/build/browser. HLS/torrent remain separate. Success: counts for disposal/shared/rejoin/cache/timers/media and scoped proposal to dispatch.
@@ -0,0 +1,3 @@
- HEAD slice only. Current media cancellation hook does not cover fetch; reproduce real ownership flow before proposing hook reuse.
- Do not change product/tests without dispatch contract routing. Keep HLS/torrent and wide Stage3 completion open.
- No redundant full/lint/build/browser for scratch investigation; QA slot untouched.
@@ -1,10 +1,11 @@
{
"id": "client-reliability-9",
"area": "client-reliability",
"status": "open",
"status": "in-progress",
"title": "Measure remaining active HEAD HLS torrent cancellation at current HEAD",
"blockedOn": null,
"addedOn": "2026-10-22",
"filedAt": "fb54cea3a2ba99b4860421724a5050af6b97c293",
"brief": "docs/agents/CAMPAIGN-2026-10-22.md"
"brief": "docs/agents/CAMPAIGN-2026-10-22.md",
"evidence": "c5b678f7 controlled actual observer/controller HEAD: disposed/same-turn/later3 natural failures (abort0,timer1,unsettled,one obsolete fetch reused),8 shared/cross/legacy/live success-error-timeout/late completion controls pass. No product/test changes; waiting independent confirmation+HEAD-only implementation/spec routing. See test_logs/TEST_LOG_2026-10-22_14-12-00_client-reliability-9-head.md and /tmp/client9-head-repro.mjs."
}
@@ -0,0 +1,13 @@
# client-reliability-9 HEAD investigation
- HEAD: c5b678f7c9d0b92fbf786b16ae831f1be1d0b899; filedAt fb54cea3. Controller/observer/cache diff between filedAt and HEAD is empty. Item still applies; claimed.
- Scratch: /tmp/client9-head-repro.mjs, derived from real lifecycle fixture; imports actual observer/controller/cache. Controlled fetch and AbortSignal; manually driven positive-delay timeout callbacks; actual DOM/media events. Zero-delay JSDOM tasks use native timers. No public IO, sleep, retry, forced exit or internal probe override.
- Command per mode: `env -u NODE_TEST_CONTEXT node /tmp/client9-head-repro.mjs <mode>`; /tmp/client9-<mode>.tap; structured /tmp/client9-results.json.
- Three natural failures (1 scenario each, exit1, cancelled0): disposed, same-turn, later. Last owner leaves HEAD1/abort0/timer1(5000ms)/unsettled/cache0/media0/video slots0/queued0/original inflight retained. Rejoin starts1 HEAD total, expected2. This is retained network work, not media-slot retention: HEAD has no shared slot cap in this controller.
- Eight natural passes (exit0, 1 scenario each, cancelled0): shared, cross, legacy, live-success, live-error, live-timeout, late-success, late-error. Shared survivor remains un-aborted and receives healthy result; disposed badge checking. Live HEAD success/error/timeout proceed to successful controlled media and healthy cache; timeout abort1. Completed probe timers0, video slots0. Late HEAD success/error after disposal settles null/cache0/media0/mirror0; existing guards work eventually, but not promptly.
- Cleanup resolves all controlled outstanding HEAD requests, completes created media, disposes registrations, restores globals and closes JSDOM before natural exit. Initial diagnostic intercepted a JSDOM0ms timer; corrected capture to delegate0ms tasks, repeated all11 modes above. Final pass timer counts exclude no real probe timer.
- Inspection: retainUrlProbe calls lifecycle.cancelActive on final owner loss, but probeUrl HEAD phase installs none. Existing hook only covers active media. Proposed smallest product boundary: js/ui/urlHealthController.js probeUrl HEAD phase only; register identity-checked lifecycle cancellation hook, mark cancelled synchronously, abort/race-settle cancelled, clear timer and hook on every completion; explicitly skip fallback/mirrors/cache on cancel. Existing shared-owner release logic/cache identity guards stay unchanged.
- Proposed retained test boundary: new focused HEAD lifecycle suite or tests/url-health-lifecycle.test.mjs plus unique integrity/spec notes. Preserve current29 media scenarios and live HEAD error/timeout fallback. Add both rejoin timings, shared/cross/legacy controls, cancellation with abort-unresponsive transport, late callbacks/replacement identity and transition-to-media/FIFO checks before readiness. Need explicit routing/spec contract before writes.
- Unverified: HLS/torrent active cancellation, browser/network cancellation bytes, FIFO competition/replacement late callbacks (not yet reproduced in this HEAD scratch), no-AbortController behavior, whole Stage3, real playback/CPU, full suite/lint/build/browser. QA expensive slot untouched.
- Open PR check attempted prescribed GitHub API via curl: exit6 DNS could not resolve api.github.com. No product changes/PR creation; overlap not remotely qualified.
- No product/retained test changes. Investigation evidence only; waiting for independent reproduction and minimal implementation routing.
@@ -0,0 +1,3 @@
- [x] Read rules/campaign/mail; clean fast-forward; claim9; ack dispatch.
- [ ] Reproduce active HEAD final-owner disposal and controls.
- [ ] Report evidence, proposed files and contract; await routing before implementation.
@@ -0,0 +1,6 @@
- [x] Safe sync/claim/ack and source review.
- [x] HEAD disposal/rejoin3 natural failures;8 controls pass.
- [x] Record exact commands/counts/limits and scoped proposal.
- [ ] Dispatch independent reproduction + explicit implementation/spec routing.
- [ ] Later: retained HEAD regression/mutants/focused/lint and allocated normal gates.
- [ ] HLS/torrent separately measured/routed.