[self-care:pages-health] Bound shard size probe concurrency in dashboard data worker
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 85/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
- Ambito
- frontend
Direzione di ricerca
Apri dashboard/site/src/data-worker.js e individua measureShards; modificalo per usare un pool di concorrenza di 6 che si ferma su abort invece di Promise.all. Aggiungi un test unitario in dashboard/site/test/unit/data-worker-shards.test.js che asserisce max 6 richieste HEAD in-flight e dimensioni registrate. Fatto quando i test unitari esistenti data-worker-* passano e il typecheck passa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The deployed dashboard is reachable and all 210 Lighthouse runs completed, but navigation coverage is incomplete (136 of 210 page/profile checks) and every recorded browser error is an aborted HEAD request for an activity shard (6,936 in total). This PR bounds the concurrency of those probes; the fix is not performance-validated against production.
Action: Dashboard maintainer: review and merge this PR, then rerun Pages Health and confirm net::ERR_ABORTED shard HEAD requests drop and the incomplete-navigation count falls below 136.
Pages: 70 | Views declared: 142 | Browser errors: 6,936 (0 console/page errors) | Failed requests: 6,936 (all ERR_ABORTED HEAD) | Incomplete checks: 136 navigation, 0 Lighthouse | Profiles: 3 (desktop, mobile, low-bandwidth)
Critical Findings
- Every error in all three profiles is
HEAD https://githubnext.github.io/gh-cao/cao/gh-aw-logs-runs/*.jsonl: net::ERR_ABORTED(desktop 2,285; mobile 4,597; low-bandwidth 54).dashboard/site/src/data-worker.jsmeasureShardsissues one unboundedHEADper pending shard viaPromise.all; these requests are aborted when the page swaps or the worker is cancelled. - Navigation incomplete: desktop 56/70, mobile 49/70, low-bandwidth 31/70 pages. Blockers are mainly
scrollIntoViewIfNeeded: Element is not attached to the DOM(the DOM is re-rendering during scrolling),did not render declared views: view-1, and 30s timeouts waiting forcommands,commandandgovernancepage roots. A causal link between the HEAD traffic and these blockers is not established. - Lighthouse completed for all 70 pages in each profile.
JavaScript Quick Wins
- Bound shard
HEADprobe concurrency (implemented here).measureShardsnow uses a pool of 6 workers and stops when the signal aborts, instead of firing one request per shard at once. Not performance-validated; existingdata-worker-*unit tests pass (9 files, 17 tests) and typecheck passes. - Reserve layout space for late-rendering view content (not implemented). Mobile CLS is highest on
workflow-value(0.744),marketplace-package(0.672),campaign-detail(0.461),campaign-workflows(0.462),tool-runs(0.510); low-bandwidthmarketplace-package0.805 andworkflow-value0.751; desktopaudit-runs0.249. Not performance-validated; needs identification of the shifting elements. - Keep view DOM stable while scrolling (not implemented). The
Element is not attached to the DOMblockers indicate views re-render during the scroll pass; avoiding replacement of unchanged view nodes would let the collector complete. Not performance-validated.
Performance by profile and page
Ranges (min / median / max) across 70 pages. Scores are 0–1; times in ms.
| Profile | Score | FCP | LCP | CLS | Speed Index | TBT |
|---|---|---|---|---|---|---|
| desktop | 0.88 / – / 1 | 362 / 375 / 474 | 470 / 483 / 584 | 0.029 / 0.029 / 0.249 | 507 / 566 / 842 | 0 / 0 / 5.5 |
| mobile | 0.70 / – / 0.94 | 1540 / 1544 / 1616 | 2102 / 2201 / 2402 | 0 / 0.104 / 0.744 | 1541 / 1546 / 1905 | 172 / 241 / 332 |
| low-bandwidth | 0.35 / – / 0.62 | 5040 / 5044 / 5243 | 7280 / 7310 / 8404 | 0 / 0.108 / 0.805 | 5040 / 5044 / 5243 | 122 / 243 / 327 |
Lowest scores: desktop audit-runs 0.88; mobile workflow-value and marketplace-package 0.70; low-bandwidth marketplace-package 0.35. Mobile and low-bandwidth runs are slower than desktop on every timing metric; no thresholds are applied. Per-page scores and metrics for all 210 runs are in the perf data of self-care-pages-health-evidence/summary.json (artifact self-care-pages-health-41188813440).
Browser errors and coverage
- Console errors: 0. Uncaught page errors: 0. HTTP responses ≥400: none recorded.
- Failed requests: 6,936
HEAD .../gh-aw-logs-runs/*.jsonlnet::ERR_ABORTED(desktop 2,285; mobile 4,597; low-bandwidth 54). - Incomplete navigation (not treated as passing): desktop 56 pages, mobile 49, low-bandwidth 31, including
commands,command,governance,steering,firewall,mcps,repositories,workflow-detail,runs,overview,costand others; complete pages visited all their declared views. Pages where declared views did not render includeview-1pages (4–5 per profile). - Incomplete Lighthouse runs: 0.
- Full per-page lists are in
summary.json.
Audit notes
Collector exit code 0; summary.json and all three profile directories present; 70 declared pages and 142 declared views; 70 Lighthouse results per profile. Methodology: Playwright scrolled each page and view; cold Lighthouse per page and profile. Limitation: only quick win 1 was changed, and no post-change production measurement exists. Artifact: self-care-pages-health-41188813440.
Agent prompt
In dashboard/site/src/data-worker.js, keep measureShards bounded to a small concurrency pool that stops on abort, and add a unit test in dashboard/site/test/unit/data-worker-shards.test.js asserting that no more than 6 shard HEAD requests are in flight at once and that sizes are still recorded.
Control Plane
- Correlation ID:
41188567811-3022 - Central repository:
githubnext/gh-cao - Control plane run: https://github.com/githubnext/gh-cao/actions/runs/41188567811
References
- Deployed site: https://githubnext.github.io/gh-cao/cao/
- Workflow run: https://github.com/githubnext/gh-cao/actions/runs/41188813440
cao: githubnext/gh-cao, correlation: 41188567811-3022
[!NOTE]
This was originally intended as a pull request, but the git push operation failed.Original error: ERR_SYSTEM: git push failed (exit code 128): remote: Permission to githubnext/gh-cao.git denied to mnkiefer. fatal: unable to access 'https://github.com/githubnext/gh-cao.git/': The requested URL returned error: 403
Workflow Run: View run details and download bundle artifact
The bundle file is available in the
agentartifact in the workflow run linked above.
Create the pull request manually
# Download the artifact from the workflow run
gh run download '41188813440' -n agent -D '/tmp/agent-41188813440'
# Resolve the bundle source ref, fetch it into a temporary ref, then create the local branch
bundle_path='/tmp/agent-41188813440/aw-githubnext-gh-cao-self-care-pages-health-shard-probe.bundle'
temp_ref='refs/bundles/create-pr-self-care-pages-health-shard-probe-6db8d454980231a2-bae385e6'
target_ref='refs/heads/self-care/pages-health-shard-probe-6db8d454980231a2'
bundle_source_ref=$(git bundle list-heads "$bundle_path" | awk '$2 ~ /^refs\/heads\// { print $2 }')
if [ -z "$bundle_source_ref" ]; then
bundle_source_ref=$(git bundle list-heads "$bundle_path" | awk '$2 == "HEAD" { print $2 }')
fi
if [ "$(printf '%s\n' "$bundle_source_ref" | sed '/^$/d' | wc -l | tr -d ' ')" != "1" ]; then
echo "Expected exactly one bundle source ref, found: $bundle_source_ref" >&2
exit 1
fi
git fetch "$bundle_path" "${bundle_source_ref}:${temp_ref}"
git update-ref "$target_ref" "$temp_ref"
git checkout 'self-care/pages-health-shard-probe-6db8d454980231a2'
# Ensure the working tree matches the updated branch
git reset --hard
# Remove the temporary bundle ref
git update-ref -d "$temp_ref"
# Push the branch to the target remote
git push 'origin' 'self-care/pages-health-shard-probe-6db8d454980231a2'
# Create the pull request
gh pr create --title '[self-care:pages-health] Bound shard size probe concurrency in dashboard data worker' --base 'main' --head 'self-care/pages-health-shard-probe-6db8d454980231a2' --repo 'githubnext/gh-cao'
Generated by SelfCare / Pages Health · copilot · auto · ~37 AIC · ⌖ ~2 AIC · ⊞ 14.5K · ◷
- expires on Nov 7, 2026, 10:41 AM UTC
- Lingua principale
- JavaScript
- Stelle
- 8
- Fork
- 5
- Merge medio
- 2h 50m
- PR unite (30g)
- 815
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di githubnext/gh-cao
-
repo-assist repo-assist:issue-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
githubnext/gh-cao#20041 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
githubnext/gh-cao#19959 ·
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows self-care self-care:reactive-ui-expert
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 85/100
githubnext/gh-cao#19923 ·
I maintainer di solito rispondono entro 1 giorno
-
repo-assist repo-assist:issue-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
githubnext/gh-cao#19883 ·
I maintainer di solito rispondono entro 1 giorno
-
repo-assist repo-assist:issue-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
githubnext/gh-cao#19642 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di githubnext/gh-cao
Issue simili
-
neutral:fix
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
wazuh/wazuh-documentation#10611 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
remotion-dev/remotion#12905 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement websites
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
quarto-dev/quarto-cli#15255 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Money fields reject amounts that aren't multiples of $500, so Find cliffs silently does nothingAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
PolicyEngine/cliff-watch#44 ·