Files
bitvid/docs/testing/playback-qa-4-preparation.md
T

14 KiB
Raw Blame History

QA4 mobile investigation preparation

2026-10-22, HEAD 4de357e4a7489d6a25466cdec9babd8ed1edd513. QA4 claimed after newest rules/current prefix read. Prior QA3 remains blocked, not fixed/done; its evidence checkpoint is durable. Latest dispatch20261022T142538 HOLD supersedes the earlier browser grant: no Chromium, server, full suite or build started. Storage may consume the exclusive expensive slot. This note is source preparation, not a new actual-app reproduction.

Plan after explicit browser resume:

  1. Serve own current actual app on a private port with verified genuine Buffer; require actual application/harness readiness. Reuse verified generated CSS only with explicit source/output provenance; no build or product rewrite. Deny public HTTP/WebSocket. Synthetic existing harness identity only if needed to reach Upload; no real account, relay events, signer/cloud/media.
  2. Open Upload through real UI at360×800,390×844,1280×720. Capture strict document scrollWidth<=viewport separately per viewport; preserve every failure and prior QA2 failure. No tolerance or alternate relaxed pass.
  3. Persist full DOM node identity/path, bounding/client/scroll geometry, overflow/position/transform/width/padding/border/computed source rules. Account for clipped and animated descendants before identifying a culprit; bounding-box overflow alone is not proof of document overflow.
  4. Measure critical control size/reachability, actual Tab containment, focus-visible styles and close-trigger restoration. Capture screenshot and scroll positions. Local Chromium measurements do not qualify real-device/accessibility/AA behavior.
  5. Stop/report first boot blocker or demonstrated culprit and minimal implicated source scope; release all own resources. No CSS/product/helper/config/retained test edits before independent reproduction/routing.

Source checks: git diff b1174163 HEAD -- css components/upload-modal.html index.html tailwind.config.cjs postcss.config.cjs empty. Existing generated CSS at dispatch dist has SHA256 283d04642d201edba1e9bd5cbc3ede8d74fbd11b50ff0cd2732d463847d2adf3, equal prior QA2 pin; no build run. Current source checkout lacks generated CSS. Existing genuine reconstructed Buffer bundle SHA256 2f1f8730af8c9fb08068a41c9c18356b9f48f21635fe5deed6d17fc6b9b97be7 matches QA3 checks; different from historical bundle, with upstream cache/source pins and6 API sanity controls retained in QA3 evidence.

Candidate source locations to inspect against runtime evidence: Upload components/upload-modal.html root/modal-sheet/header/body/source-selector; CSS css/tailwind.source.css modal rules around1525–1650 including mobile100vw padding, plus modal stack rules around4618. These are inspection locations, not established causes. Prior raw overflowing spans also appeared at desktop without document overflow, so do not infer culprit from that heuristic.

Retained required baseline: QA2 Upload document362/360 and394/390; desktop1280/1280, critical controls horizontally inside, original strict FAIL remains open. No current runtime width/focus/touch result yet. Preview3000 and peer resources untouched. Await explicit resume/browser grant after storage release; no optional Firefox reruns.

Restart checkpoint 2026-10-22: user fleet-start received; PROGRAM/RESUME/TODO/.task/mailbox (0 unread), repo memory, known issues and local/current-unstable RULE-CHANGES read. Current unstable 75bc92f3a47c06ead43c3e715ef8793475635518 newest rule explicitly retains QA4 HOLD/sourceprep. QA4 claim renewed; git diff --quiet e04549f816f6ec61f305e20df0ce2b59797c4651 HEAD -- css components/upload-modal.html exit0: relevant source unchanged, runtime applicability remains unverified. Preserved both dirty files without merge. Reported resource blocker to dispatch. No new test/build/browser/server/commit/submission; browser grant remains unconsumed; preview3000 untouched. Await explicit browser resume.

Restart check 2026-10-22T20:40:52.521539+00:00: renewed QA4 claim; mailbox0 unread. HEAD 4de357e4a7489d6a25466cdec9babd8ed1edd513, unstable 26e9a787cfdc31b77ac35417a5f10e218e2b9662. Read newest unstable RULE-CHANGES: storage3 full/build, client9 next, QA4 HOLD/sourceprep. Relevant source comparison git diff --quiet e04549f816f6ec61f305e20df0ce2b59797c4651 HEAD -- css components/upload-modal.html exit0 (no changes); runtime applicability unverified. Fleet health at20:40:34UTC reports tight: swap52%; memory64.3% available, load3.81/8cores. Preserved dirty claim/preparation, no merge/commit/submission or browser/server/test/build. Await explicit browser allocation; preview3000 untouched.

Recovery and vertical/effective target audit plan — 2026-10-24T02:51:26.565965+00:00

Own HEAD 4de357e4a7489d6a25466cdec9babd8ed1edd513; observed unstable d1d6e0fed1737312129ce4c8a59d129cf3db5b7c. Read newest unstable rules as well as local rules, latest dispatch/interpreter mail, PROGRAM, RESUME, TODO, repo memory and known issues. QA4 claim renewed. Dirty backlog and both unique notes preserved; no merge/reset/cleanup. Relevant filing applicability command git diff --exit-code e04549f816f6ec61f305e20df0ce2b59797c4651 HEAD -- css components/upload-modal.html exit0: no relevant source changes. This does not reproduce the historical failure. Current width3/3 and focus containment/restore3/3 are previous runtime evidence; no new runtime check performed.

Source trace: components/upload-modal.html:15 sheet combines flex-column, max-h-modal-shell and overflow-hidden; line45 body combines overflow-y-auto, flex-1 and min-h-0. css/tailwind.source.css:1559-1598 sheet/mobile rules and1631 body rules must be checked against actual computed cascade, because mobile sheet also declares overflow:auto. Flags at template290-310 nest input and span inside clickable labels. Controller js/ui/components/UploadModal.js:318-324 binds flags/advanced selectors. Submit at template365 is inside the body/form. These identify measurement locations, not demonstrated defects.

Bounded measurement sequence for a NEW explicitly granted browser run:

  1. Preserve prior runner/results/screenshots; use a distinct scratch runner and unique result paths. Reuse pinned genuine Buffer/CSS/byte-identical genuine relay guards and prior successful disclaimer acceptance + harness relay setup. Fixed own app31864/local WS31865, no relay seeding, public HTTP/other WS denied. Verify source hashes again before launch; no build/install or blind setup retry.
  2. Same actual-app viewports360x800,390x844,1280x720 and real Upload trigger. Record strict document/client/scroll widths initially AND after scrolling/expansion, without tolerance; retain historical362/360,394/390 failures and later passes separately.
  3. Before keyboard auto-scroll, record viewport/visualViewport and document/modal/sheet/body scrollTop, clientHeight, scrollHeight, rectangles, computed overflowY/maxHeight/minHeight/flex and clipping ancestors. Position pointer over the modal body and send a bounded wheel delta based on its measured scroll range. Record which ancestor actually scrolls. Do not infer scrolling from offscreen rectangles alone or substitute scrollIntoView for the initial user-scroll check.
  4. For each flag, record native input rectangle plus every associated label (input.labels), label text rectangles and intersection with viewport and clipping ancestors. Use elementFromPoint at visible label text/center sample points to establish unobstructed ownership. Click one safe visible label text point via native pointer, require exactly one checked-state change, then restore the flag via the same UI. Report effective sampled clickable area separately from input16x16; do not assume the full label bounding rectangle is usable or equate local geometry with an AA audit.
  5. Scroll to lower flags, Advanced Options and Publish. For each, record visible clipped rectangle, obstruction at center, enabled state and whether user wheel scrolling made it reachable. Expand Advanced by normal UI, measure webseed/xs fields and submit reach again, then collapse. Do NOT click Publish, file pickers or cloud actions. If any control stays unreachable, preserve geometry/active matched rules and report first demonstrated culprit for independent reproduction/routing.
  6. Check keyboard reachability of lower controls without activating submit; record focus-visible, modal containment and focus-trigger restoration on close. Prior12-Tab evidence did not traverse every lower control. No real pinch/zoom/touch or device claim; retain prior horizontal scrollX0/scale1 as its limited measurement.
  7. Stop on first setup blocker or demonstrated culprit, record natural exit/counts and cleanup browser/private app/relay only. No browser/full/build/submission until fresh dispatch slot and resource clearance. No CSS/product/existing test/helper/config change or proposed CSS fix without reproduced cause and routing.

This checkpoint executed source inspection and applicability diff only: browser launches0, servers0, tests0, builds0, submissions0. Existing source note and boot-blocker note remain unlanded. Next dependency: dispatch NEW browser slot after HLS qualification/cooling. Preview3000 and peer resources untouched.

Exact source-only runner prepared — 2026-10-24T02:57:28.454244+00:00

Dispatch02:56:07 accepts the plan but retains HOLD: HLS released02:55:23, latest dispatch79.8C reading02:55:40 requires two cooling snapshots and NEW grant. No browser/server launched.

  • Exact eventual command: node /tmp/playback-qa-4-vertical-run.cjs from own worktree, only after NEW grant/normal host execution approval. Distinct runner SHA256 8bb9fcff8791b6dd7a19a5f4049a37eac41379c474977cd9355b8e20e60b541d. node --check /tmp/playback-qa-4-vertical-run.cjs exit0. This verifies syntax only, not runtime.
  • Original runner preserved at /tmp/playback-qa-4-run.cjs, SHA256 80b2bd6a45b78c7d5e5dc1691ecff7a9b0370b5f6a2ce275064e5f21d42c1973. New results /tmp/playback-qa-4-vertical-result.json; screenshots /tmp/playback-qa-4-vertical-<width>.png and ...-<width>-bottom.png, leaving prior artifacts intact.
  • New scratch instrumentation records initial container/label/control clipping/scroll/computed geometry; three bounded user wheel actions; associated label text native clicks+restoration for four flags if visible/unobstructed; lower controls; Advanced expanded/bottom/collapsed geometry; forty nonactivating Tab steps and existing close restore. Strict width flags retained at every snapshot. Matched stylesheet rules include controls and labels. No submit/filepicker/cloud action. Direct native pointer ownership checks precede label clicks; unreachable labels remain recorded, not silently counted as passes.
  • Rechecked Buffer mirror SHA256 2f1f8730af8c9fb08068a41c9c18356b9f48f21635fe5deed6d17fc6b9b97be7; generated CSS 283d04642d201edba1e9bd5cbc3ede8d74fbd11b50ff0cd2732d463847d2adf3; own and dispatch genuine relay source ab11b29937690810900d3a16e01e16571ce68d7f02d50c86656b76f47776cba4, cmp exit0. Runner retains these guards before any launch.
  • Genuine Buffer provenance /tmp/playback-qa-3-assets/provenance.json records cached upstream buffer6.0.3, base64-js1.5.1, ieee7541.2.1 archive integrity+SHA256. CSS remains read-only storage artifact29cbe6f0/source d9424fb7, relevant sources previously verified identical to own HEAD4de357e4. No download/install/build. Relay imported from dispatch only for genuine ws resolution after pinned byte equality; no peer process action.
  • New runtime counts remain0: browser/server/viewport/label/keyboard cases. No new tests or product/CSS/config edits or submission. Historical strict failures and subsequent3/3 width/focus passes retained separately. Execution remains unverified until grant.

Dispatch interpretation limits — 2026-10-24T02:58:20.718762+00:00

Dispatch02:58:03 reviewed runner8bb9fcff and retains HOLD pending a second cooling snapshot/new explicit grant. First cooling snapshot reported71C/load1.55/RAM62.7% at02:57:40; not a browser grant.

Interpret eventual scratch fields narrowly: reachable:false in label sampling means not measured visible at the sampled final scroll position, not proven unreachable. Three large wheel deltas may scroll past a label; preserve and inspect all intermediate snapshots before drawing any conclusion. Do not classify a missing final label as a defect. Advanced locator.click() may auto-scroll; only recorded pre-click wheel geometry can support userwheel reachability. Post-click visibility proves only locator-assisted/native activation visibility. No runner change or retry required; these limitations govern the report. Original8bb9fcff runner remains pinned. Browser/server/new runtime cases still0.

Fleet restart — 2026-10-24T19:45:35Z

Read mailbox (0 unread), newest RULE-CHANGES, PROGRAM, RESUME, area TODO, .task, known issues and repo memory. Own branch area/playback-qa and unstable both at 0ffd92a8d2072a19fe61ac6edcf5097a9538fddd. QA4 claim renewed; QA3 remains blocked. Filing applicability check git diff --exit-code e04549f816f6ec61f305e20df0ce2b59797c4651 HEAD -- index.html components/upload-modal.html css/tailwind.source.css exit0: relevant source unchanged. This is source equality, not a new reproduction.

Preserved three dirty retention paths; no merge or commit. Saved vertical runner/result SHA256 still match 8bb9fcff8791b6dd7a19a5f4049a37eac41379c474977cd9355b8e20e60b541d / c94c2cc1097fa2b3df8c42165b4ca51b2cda818c869f849f0c91db872e4522fb. Queue check exit0: queue0/lander not running. New browser/server/test/build/submission counts0. Existing parked source/results conclusion stands; awaiting dispatch retention review/routing, all browser grants expired. Historical overflow cause and measured sidebar interception cause remain inconclusive; real-device/AA/CI qualification unverified.