docs: add B10 to runner doctor catalog (rootless perm-repair tag@digest timeout)#6078
Conversation
Add new failure mode B10 (rootless permission repair timeout on tag@digest ref) to all three mirrored catalog files: - .github/workflows/shared/self-hosted-failure-modes.md - .github/workflows/self-hosted-runner-doctor.md - .github/agents/self-hosted-runner-doctor.md B10 captures the symptom from PR #6025: fixArtifactPermissionsForRootless() built compound tag@digest refs that caused Docker to attempt GHCR manifest verification even under --pull never, timing out ~30 s per directory. Fixed by resolvePermFixerImageRef() returning tag-only refs. Closes #6069
There was a problem hiding this comment.
Pull request overview
This PR updates the self-hosted runner “runner doctor” knowledge base to document a newly identified failure mode (B10) where rootless artifact permission repair incurs ~30s GHCR timeouts due to compound tag@digest image references, even under --pull never.
Changes:
- Adds B10 to the Category B failure-mode catalog (signal/root cause/fix/probes) and the error-string quick lookup.
- Updates the runner-doctor symptom recognizer to distinguish B10 from similar modes via the characteristic ~30s timeout timing.
- Adds a B10 “notable fix” entry referencing the remediation from #6025.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/shared/self-hosted-failure-modes.md | Adds B10 to the shared failure-mode catalog and quick-lookup table. |
| .github/workflows/self-hosted-runner-doctor.md | Adds B10 to the symptom recognizer and known-fixes section. |
| .github/agents/self-hosted-runner-doctor.md | Mirrors the B10 updates into the embedded agent copy (catalog + recognizer + known-fixes + quick lookup). |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 3/3 changed files
- Comments generated: 2
- Review effort level: Low
|
✅ Copilot review passed with no inline comments. @copilot Add the |
1 similar comment
|
✅ Copilot review passed with no inline comments. @copilot Add the |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 |
|
✅ Smoke Claude passed |
|
✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓 |
|
Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded. |
|
❌ Smoke Copilot BYOK AOAI (Entra) reports failed. AOAI BYOK (Entra) mode investigation needed... |
|
✅ Smoke Gemini completed. All facets verified. 💎 |
|
🚀 Security Guard has started processing this pull request |
|
✅ Contribution Check completed successfully! PR #6078 follows the applicable CONTRIBUTING.md guidelines; no comment is needed. |
|
🔌 Smoke Services — All services reachable! ✅ |
|
🔑 Smoke Copilot PAT PAT auth validated. All systems operational. ✅ |
|
❌ Smoke Copilot BYOK AOAI (api-key) reports failed. AOAI BYOK (api-key) mode investigation needed... |
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅ |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
✅ Build Test Suite completed successfully! |
Smoke Test: Claude Engine Validation
Overall Result: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test: PAT Auth Validation
Overall: PASS (MCP verified; pre-step template outputs not expanded) Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
🔥 Smoke Test Results
Overall: PARTIAL — Workflow template variables were not substituted (pre-step outputs missing). cc Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test Results (Gemini)
Overall status: FAIL Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "localhost"See Network Configuration for more information.
|
Smoke Test: Copilot BYOK (Direct) Mode
Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY) via api-proxy → api.githubcopilot.com cc Overall: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test: Services Connectivity
Overall: FAIL — Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
🔍 Smoke Test: API Proxy OpenTelemetry Tracing
All 5 scenarios passed. OTEL tracing integration is working correctly. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
|
Smoke Test Status: FAIL\n- Warning Firewall blocked 2 domainsThe following domains were blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"
- "registry.npmjs.org"See Network Configuration for more information.
|
Chroot Version Comparison Results
ALL_TESTS_PASSED: false — Python and Node.js versions differ between host and chroot. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
🏗️ Build Test Suite Results
Overall: 8/8 ecosystems passed — ✅ PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
PR #6025 introduced a new distinct failure mode not yet captured in the runner doctor knowledge base:
fixArtifactPermissionsForRootless()was building compoundtag@digestrefs (e.g.agent:0.27.22@sha256:55f065...) that caused Docker to attempt GHCR manifest verification even under--pull never, timing out ~30 s per directory (~90 s total) when GHCR credentials were unavailable.Changes
Adds B10 to all three mirrored catalog files:
shared/self-hosted-failure-modes.md— new Category B table row (after B9) + error-string quick lookup entry (after A15)self-hosted-runner-doctor.md— § 3 symptom recognizer hint (~30 s timeoutdistinguishes B10 from A15's instant error); § 4 fix paragraph citing PR fix: use tag-only image ref in rootless permission repair #6025agents/self-hosted-runner-doctor.md— identical four-point update to the embedded catalog copy (B10 table row, quick lookup entry, § 3 hint, § 4 fix)B10 distinguishing signal: each
[WARN] Rootless artifact permission repair failedattempt takes exactly ~30 s (TCP connect timeout to GHCR), not an instant failure —docker inspect agent:<tag>succeeds whiledocker pull --dry-run agent:<tag>@sha256:...times out.