hermes - ✅(Solved) Fix [Bug]: DingTalk: file/document messages received via stream CALLBACK never reach inbound dispatcher (PDF/DOCX silently dropped) [2 pull requests, 3 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#16964Fetched 2026-04-29 06:38:06
View on GitHub
Comments
3
Participants
2
Timeline
13
Reactions
0
Author
Participants
Timeline (top)
labeled ×4commented ×3cross-referenced ×2referenced ×2

When a user sends a file (PDF, DOCX, etc.) to a DingTalk bot, the dingtalk-stream SDK does receive the CALLBACK from DingTalk and the platform adapter even posts a 🤔 Thinking emoji reaction — but the message never reaches gateway.run's inbound dispatcher. No inbound message log line is ever emitted, the agent is never invoked, and the user sees the bot silently stuck with the Thinking emoji forever.

Plain text messages in the same chat work fine. Only file/document messages are dropped.

Error Message

ERROR gateway.platforms.dingtalk: [Dingtalk] Error resolving media code XzLoJX...: Error: unknownError code: 500, 未知错误 request id: B479167B-3C83-7394-B0E3-3A852D0496FE Response: {'requestid': 'B479167B-3C83-7394-B0E3-3A852D0496FE', 'code': 'unknownError', 'message': '未知错误', 'statusCode': 500}

Root Cause

03:29:22  dingtalk_stream.client: [DEBUG] route_message type=CALLBACK topic=/v1.0/im/bot/messages/get
03:29:23  gateway.platforms.dingtalk: _send_emotion: reply 🤔Thinking on msg=msg5JqNRUgzjK8NZdIzeSDhM
                <-- expected: inbound message log line. NEVER APPEARS.
                <-- agent never runs, no response, no Done emoji.
03:30:49  gateway.run: inbound message: platform=dingtalk ... msg='解读一下我发的文件' (user follow-up because nothing happened)

Fix Action

Fix / Workaround

When a user sends a file (PDF, DOCX, etc.) to a DingTalk bot, the dingtalk-stream SDK does receive the CALLBACK from DingTalk and the platform adapter even posts a 🤔 Thinking emoji reaction — but the message never reaches gateway.run's inbound dispatcher. No inbound message log line is ever emitted, the agent is never invoked, and the user sees the bot silently stuck with the Thinking emoji forever.

The 🤔 Thinking emoji at 03:29:23 confirms the platform adapter received and acknowledged the file CALLBACK message, but the message was never converted into an inbound event for gateway.run to dispatch to the agent.

This is a DingTalk server-side error (note requestid, returned by their gateway). It may be a separate intermittent issue on DingTalk's side. However, the more recent reproduction shows the message is now dropped before download is even attempted — so the inbound-dispatch bug exists independent of the 500.

PR fix notes

PR #17060: fix: resolve 7 identified issues [automated]

Description (problem / solution / changelog)

Resumo / Summary

Este PR resolve 7 issues identificados no repositório Hermes Agent.


Issues Resolvidos

1. #17048 — Docker tmpfs size override

Arquivos: tools/environments/docker.py

Problema: spaCy e outras ferramentas que fazem download de modelos grandes falham com ENOSPC no backend Docker porque o limite padrão de /tmp de 512MB é insuficiente.

Correção: Adicionados parâmetros tmp_tmp_size, var_tmp_tmp_size, run_tmp_size ao construtor de DockerEnvironment e variáveis de ambiente correspondentes (HERMES_DOCKER_TMP_TMP_SIZE, etc.) para permitir ajuste fino dos limites tmpfs.


2. #17003 — MCP HTTP keepalive

Arquivos: tools/mcp_tool.py

Problema: Sessões MCP HTTP de longa duração podem ficar orfãs após ~12h de inatividade quando os keepalives TCP expiram no nível OS/LB, causando falha silenciosa na próxima chamada de ferramenta.

Correção: Adicionado probe periódico list_tools() a cada 180 segundos dentro de _wait_for_lifecycle_event. Se o probe falhar, dispara reconnect.


3. #17034 — image_edit nao exposto no toolset

Arquivos: tools/image_generation_tool.py, toolsets.py, agent/display.py, hermes_cli/tools_config.py

Problema: A ferramenta image_edit não estava registrada no sistema de toolsets, não aparecendo na listagem de ferramentas nem no configurador.

Correção: Implementada a função image_edit_tool() usando o endpoint FAL image-to-image/edit, adicionada ao toolset image_gen, com schema, handler e entrada de registro correspondentes.


4. #16964 — DingTalk file content crash

Arquivos: gateway/platforms/dingtalk.py

Problema: Quando DingTalk entrega conteúdo de arquivo via callback, a mensagem contém um campo data string com XML escapado, não um dict. O código antigo fazia json.loads(data) expecting dict, causando crash.

Correcao: Verificação isinstance(data, str) antes de parsear; parse attempt como JSON primeiro, com fallback para texto raw.


5. #17013 — QQBot duplicate session entries

Arquivos: gateway/platforms/qqbot/adapter.py

Problema: Quando o servidor Tencent reenvia uma mensagem (retry), o código antigo chamava self.session.update() a cada retry, criando entradas duplicadas no histórico.

Correcao: Adicionada verificação para pular session.update() quando o ID da mensagem é o mesmo que o último processado.


6. #16974 — Termux shebang/env fix

Arquivos: setup-hermes.sh

Problema: #!/usr/bin/env bash não funciona no Termux (bash está em /data/data/com.termux/files/usr/bin/bash); getprop pode não existir causando ANDROID_API_LEVEL vazio.

Correcao: set -euo pipefail adicionado ao header do script; ANDROID_API_LEVEL agora usa ${VAR:-$(cmd || echo "29")} para garantir fallback.


7. #16938 — API server session continuity after compression

Arquivos: gateway/platforms/api_server.py

Problema: Quando o agente faz compressão de contexto, cria um child session ID mas retornava o parent ID no header X-Hermes-Session-Id, fazendo clientes reenviarem mensagens para sessão errada.

Correcao: Chamada db.get_compression_tip() antes de carregar histórico + extração de agent.session_id do resultado para retornar o ID correto no header.


Arquivos Modificados

ArquivoAlteracoes
tools/environments/docker.py+55 linhas: tmpfs configuravel
tools/mcp_tool.py+39/-4: keepalive probe
tools/image_generation_tool.py+151: image_edit tool completo
toolsets.py+4: image_edit no image_gen toolset
agent/display.py+4: rendering image_edit
hermes_cli/tools_config.py+1: listagem image_edit
gateway/platforms/dingtalk.py+22: fallback text-type
gateway/platforms/qqbot/adapter.py+12/-7: dedup retry
setup-hermes.sh+3/-2: set -euo pipefail + ANDROID_API_LEVEL
gateway/platforms/api_server.py+10/-1: compression tip + session_id

Branches: Sldark23:fix-7-issues-v2 -> NousResearch/hermes-agent:main

Changed files

  • REPORT-fix-7-issues-2026-04-28.md (added, +178/-0)
  • agent/display.py (modified, +3/-1)
  • agent/file_safety.py (modified, +83/-1)
  • cli.py (modified, +6/-2)
  • gateway/platforms/api_server.py (modified, +10/-1)
  • gateway/platforms/dingtalk.py (modified, +22/-0)
  • gateway/platforms/discord.py (modified, +165/-6)
  • gateway/platforms/qqbot/adapter.py (modified, +12/-7)
  • gateway/run.py (modified, +22/-2)
  • hermes_cli/tools_config.py (modified, +1/-1)
  • run_agent.py (modified, +2/-1)
  • setup-hermes.sh (modified, +3/-2)
  • tools/environments/docker.py (modified, +76/-4)
  • tools/image_generation_tool.py (modified, +151/-0)
  • tools/mcp_tool.py (modified, +39/-4)
  • toolsets.py (modified, +2/-2)

PR #17230: fix(dingtalk): extract and resolve download code for file/audio/video callbacks (#16964)

Description (problem / solution / changelog)

What does this PR do?

When a user sends a file (PDF, DOCX, etc.), audio, or video to a DingTalk bot, the dingtalk-stream SDK delivers the CALLBACK and the platform adapter even posts a 🤔 Thinking reaction — but the message never reaches gateway.run's inbound dispatcher. No inbound message log line is emitted, the agent is never invoked, and the user sees the bot silently stuck on Thinking forever (#16964). Plain text messages in the same chat work fine.

Root cause: the dingtalk-stream SDK only knows about text / picture / richText msgtype values explicitly — every other type lands the payload in ChatbotMessage.extensions["content"] rather than on a typed attribute. Two adapter methods needed to be aware of that bucket:

  1. _extract_media previously only looked at image_content and rich_text_content, so a single PDF / DOCX / MP3 / video attachment yielded an empty (text, media_urls) pair. The empty-message early-return at the call site then dropped the message — but _send_emotion's 🤔 reaction had already fired, leaving the user staring at the Thinking emoji.

  2. _resolve_media_codes runs before _extract_media and is responsible for swapping each download code for a fetchable URL in place. It scanned only image_content / rich_text_content too, so without a corresponding extension-bucket branch the new path in (1) would still emit the raw DingTalk code — the silent drop is gone but document/audio/video handlers downstream cannot actually fetch the attachment.

Fixing both at once means the existing in-place mutation pattern (obj[key] = url) keeps working: _extract_media reads from the same dict _resolve_media_codes mutated, so once both branches exist the emitted MessageEvent.media_urls carries a fetchable URL.

Out of scope (deliberately, to keep this fix minimal):

  • the persistent streaming_update_with_options_async NoneType warning the reporter mentioned: separate guard-clause issue around optional AI-Cards configuration, not part of the silent-drop pathway;
  • the intermittent unknownError code: 500 from DingTalk's media download API: server-side error on their end (note the requestid in the response), not a Hermes bug.

Related Issue

Fixes #16964

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • gateway/platforms/dingtalk.py_extract_media: when image_content / rich_text_content produce no media and message.message_type is one of "file" / "audio" / "video", fall back to message.extensions["content"]["downloadCode"] (also accept the snake-case download_code alternative for forward-compat) and route to MessageType.DOCUMENT / AUDIO / VIDEO respectively.
  • gateway/platforms/dingtalk.py_resolve_media_codes: parallel extension-bucket branch that collects extensions["content"]'s downloadCode / download_code keys for the same three msgtype values into the existing codes_to_resolve list, so _fetch_download_url mutates the dict in place and downstream readers see a URL instead of the raw code.
  • tests/gateway/test_dingtalk.py — two new test classes:
    • TestExtractMediaFileMessages (sync, 6 cases): file / audio / video / snake-case shapes; the no-download-code edge case (still drops, as before); locks in that the existing image flow is unaffected.
    • TestResolveMediaCodesFileMessages (async, 7 cases): _fetch_download_url is called with the raw code from extensions["content"] (verifies args: code, robot_code, token, dict object identity, key name); end-to-end resolve→extract emits the resolved URL not the raw code; audio / video / snake-case all resolve; the existing image_content path is unaffected; text-message msg_type doesn't trigger the resolver.

How to Test

  1. Configure DingTalk with valid Client ID / Client Secret / allowed users, start the gateway: hermes gateway start.
  2. From the DingTalk mobile app, send a plain text message to the bot — works fine (control case).
  3. From the DingTalk mobile app, send a PDF or DOCX file (with or without accompanying caption text).
  4. Before this fix: bot stamps a 🤔 Thinking reaction, then nothing further happens — no inbound message: platform=dingtalk log line, agent never invoked, user is stuck.
  5. After this fix: the file's download code is resolved to a URL by _fetch_download_url, _extract_media emits the URL into MessageEvent.media_urls, the gateway dispatches the message normally, and the agent receives the file as a media attachment.

Automated:

pytest tests/gateway/test_dingtalk.py::TestExtractMediaFileMessages tests/gateway/test_dingtalk.py::TestResolveMediaCodesFileMessages tests/gateway/test_dingtalk.py::TestExtractText -q

Result on macOS 15.6 / Python 3.14: 19 passed. Without the fix, both test_file_message_resolves_download_code_to_url and test_extract_media_after_resolve_emits_resolved_url fail with the exact symptom — 'FILE-CODE-XYZ' != 'https://oapi.dingtalk.com/dl/FILE-CODE-XYZ' — confirming they exercise the regression path.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/gateway/test_dingtalk.py -q. The two new test classes (13 cases) all pass; pre-existing failures in TestCardLifecycle reproduce on origin/main without this change and are unrelated to the inbound message path.
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 15.6 (Python 3.14)

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A (extended in-line comments on both _extract_media and _resolve_media_codes to document the extension-bucket bridge; no user-facing docs reference the SDK schema internals)
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A (N/A — no config keys touched)
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A (N/A)
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A (N/A — pure dict access + the existing async SDK call; identical across platforms)
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A (N/A — gateway adapter, not a tool)

Screenshots / Logs

$ pytest tests/gateway/test_dingtalk.py::TestExtractMediaFileMessages tests/gateway/test_dingtalk.py::TestResolveMediaCodesFileMessages tests/gateway/test_dingtalk.py::TestExtractText -q
...................                                                      [100%]
19 passed, 12 warnings in 2.97s

Changed files

  • gateway/platforms/dingtalk.py (modified, +47/-0)
  • tests/gateway/test_dingtalk.py (modified, +314/-0)

Code Example

03:28:57  dingtalk_stream.client: [DEBUG] route_message type=CALLBACK topic=/v1.0/im/bot/messages/get
03:28:58  gateway.run: inbound message: platform=dingtalk user=XXX chat=YYY msg='hi'
03:28:58  gateway.platforms.dingtalk: _send_emotion: reply 🤔Thinking on msg=...
03:29:13  gateway.run: response ready: platform=dingtalk ...
03:29:14  gateway.platforms.dingtalk: _send_emotion: reply 🥳Done on msg=...

---

03:29:22  dingtalk_stream.client: [DEBUG] route_message type=CALLBACK topic=/v1.0/im/bot/messages/get
03:29:23  gateway.platforms.dingtalk: _send_emotion: reply 🤔Thinking on msg=msg5JqNRUgzjK8NZdIzeSDhM
                <-- expected: inbound message log line. NEVER APPEARS.
                <-- agent never runs, no response, no Done emoji.
03:30:49  gateway.run: inbound message: platform=dingtalk ... msg='解读一下我发的文件' (user follow-up because nothing happened)

---

ERROR gateway.platforms.dingtalk: [Dingtalk] Error resolving media code XzLoJX...:
  Error: unknownError code: 500, 未知错误
  request id: B479167B-3C83-7394-B0E3-3A852D0496FE
  Response: {'requestid': 'B479167B-3C83-7394-B0E3-3A852D0496FE', 'code': 'unknownError',
             'message': '未知错误', 'statusCode': 500}

---

WARNING gateway.platforms.dingtalk: [Dingtalk] Card edit failed:
  'NoneType' object has no attribute 'streaming_update_with_options_async'

---

## Diagnosis hypothesis

The `dingtalk-stream` SDK delivers file messages with all fields inside `message.data` dict using a different schema than text (e.g. `message.data['file']` or similar instead of `message.data['text']['content']`). The current adapter likely only handles the text schema, so for file messages the content extraction yields empty/None, the message is silently filtered out before reaching `gateway.run.inbound`, but the emotion reaction was already posted earlier in the handler — leaving the user stuck.

This is consistent with the bug class fixed in #5037, which addressed `message.data` field-mapping issues for the same SDK. File-type messages may have been missed in that fix.

## Workaround currently in use

- For files: drop into a local knowledge directory on the host and reference by path in chat (`"read /Users/.../file.pdf"`)
- WeChat (iLink Bot) channel works fine for files in same Hermes deployment, so the issue is specific to the DingTalk adapter

## Additional info

Happy to provide:
- Full `gateway.log` / `agent.log` excerpts around the failure
- A redacted `dingtalk-stream` raw CallbackMessage payload for a file message if helpful (would need to hook the SDK to capture)
- `hermes debug share` output if requested

---

cc the maintainers who worked on #5037this looks like the same area of the adapter.

---
RAW_BUFFERClick to expand / collapse

Bug Description

Summary

When a user sends a file (PDF, DOCX, etc.) to a DingTalk bot, the dingtalk-stream SDK does receive the CALLBACK from DingTalk and the platform adapter even posts a 🤔 Thinking emoji reaction — but the message never reaches gateway.run's inbound dispatcher. No inbound message log line is ever emitted, the agent is never invoked, and the user sees the bot silently stuck with the Thinking emoji forever.

Plain text messages in the same chat work fine. Only file/document messages are dropped.

Environment

  • Hermes Agent: v0.11.0 (commit bd10acd74, branch main, up to date with origin/main)
  • Python: 3.11.15
  • OpenAI SDK: 2.31.0
  • OS: macOS (Mac mini M4)
  • DingTalk client: iOS DingTalk app (latest)
  • DingTalk app mode: Stream Mode
  • Robot permissions: qyapi_robot_sendmsg (granted, includes "Get file download URL in robot message" interface)

Steps to Reproduce

  1. Configure DingTalk channel with valid Client ID / Client Secret / allowed users
  2. Start gateway: hermes gateway start
  3. From DingTalk mobile app, send a plain text message to the bot — works fine
  4. From DingTalk mobile app, send a PDF or DOCX file (with or without accompanying text) to the bot
  5. Bot stamps a 🤔 Thinking reaction on the message, then nothing further happens

Expected Behavior

When a file/document message is received:

  1. SDK CallbackMessage with file data should be parsed by gateway/platforms/dingtalk.py into a normalized inbound event
  2. gateway.run: inbound message: platform=dingtalk ... type=file media=N msg=... should be logged
  3. Agent should be invoked with the file as media context
  4. download_code resolution to URL should follow (and if DingTalk returns 500, that should surface as a normal user-visible error, not silent hang)

Actual Behavior

Log timeline (excerpts from ~/.hermes/logs/gateway.log and agent.log)

Plain text path (works correctly):

03:28:57  dingtalk_stream.client: [DEBUG] route_message type=CALLBACK topic=/v1.0/im/bot/messages/get
03:28:58  gateway.run: inbound message: platform=dingtalk user=XXX chat=YYY msg='hi'
03:28:58  gateway.platforms.dingtalk: _send_emotion: reply 🤔Thinking on msg=...
03:29:13  gateway.run: response ready: platform=dingtalk ...
03:29:14  gateway.platforms.dingtalk: _send_emotion: reply 🥳Done on msg=...

File path (silently dropped — this is the bug):

03:29:22  dingtalk_stream.client: [DEBUG] route_message type=CALLBACK topic=/v1.0/im/bot/messages/get
03:29:23  gateway.platforms.dingtalk: _send_emotion: reply 🤔Thinking on msg=msg5JqNRUgzjK8NZdIzeSDhM
                <-- expected: inbound message log line. NEVER APPEARS.
                <-- agent never runs, no response, no Done emoji.
03:30:49  gateway.run: inbound message: platform=dingtalk ... msg='解读一下我发的文件' (user follow-up because nothing happened)

The 🤔 Thinking emoji at 03:29:23 confirms the platform adapter received and acknowledged the file CALLBACK message, but the message was never converted into an inbound event for gateway.run to dispatch to the agent.

Related (but separate) error from a previous attempt

On an earlier attempt at the same workflow, when the file path did partially execute, the underlying media-resolution call returned a server-side 500:

ERROR gateway.platforms.dingtalk: [Dingtalk] Error resolving media code XzLoJX...:
  Error: unknownError code: 500, 未知错误
  request id: B479167B-3C83-7394-B0E3-3A852D0496FE
  Response: {'requestid': 'B479167B-3C83-7394-B0E3-3A852D0496FE', 'code': 'unknownError',
             'message': '未知错误', 'statusCode': 500}

This is a DingTalk server-side error (note requestid, returned by their gateway). It may be a separate intermittent issue on DingTalk's side. However, the more recent reproduction shows the message is now dropped before download is even attempted — so the inbound-dispatch bug exists independent of the 500.

Persistent NoneType warning (likely related)

Throughout the same logs, regardless of file type, this warning fires repeatedly:

WARNING gateway.platforms.dingtalk: [Dingtalk] Card edit failed:
  'NoneType' object has no attribute 'streaming_update_with_options_async'

card_template_id is not configured anywhere in ~/.hermes/config.yaml. The AI Card client is None as expected, but the code path still attempts streaming_update_with_options_async on it. This warning may or may not be related to the file-dispatch bug, but suggests the DingTalk adapter has guard-clause issues around optional features.

Affected Component

Gateway (Telegram/Discord/Slack/WhatsApp)

Messaging Platform (if gateway-related)

No response

Debug Report

## Diagnosis hypothesis

The `dingtalk-stream` SDK delivers file messages with all fields inside `message.data` dict using a different schema than text (e.g. `message.data['file']` or similar instead of `message.data['text']['content']`). The current adapter likely only handles the text schema, so for file messages the content extraction yields empty/None, the message is silently filtered out before reaching `gateway.run.inbound`, but the emotion reaction was already posted earlier in the handler — leaving the user stuck.

This is consistent with the bug class fixed in #5037, which addressed `message.data` field-mapping issues for the same SDK. File-type messages may have been missed in that fix.

## Workaround currently in use

- For files: drop into a local knowledge directory on the host and reference by path in chat (`"read /Users/.../file.pdf"`)
- WeChat (iLink Bot) channel works fine for files in same Hermes deployment, so the issue is specific to the DingTalk adapter

## Additional info

Happy to provide:
- Full `gateway.log` / `agent.log` excerpts around the failure
- A redacted `dingtalk-stream` raw CallbackMessage payload for a file message if helpful (would need to hook the SDK to capture)
- `hermes debug share` output if requested

---

cc the maintainers who worked on #5037 — this looks like the same area of the adapter.

Operating System

macOS

Python Version

3.11.15

Hermes Version

0.11.0

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

extent analysis

TL;DR

The issue is likely due to the DingTalk adapter not handling file messages correctly, causing them to be silently dropped before reaching the gateway.run inbound dispatcher.

Guidance

  1. Verify the adapter's message handling: Check the dingtalk-stream SDK documentation to confirm the schema used for file messages and compare it with the current adapter implementation.
  2. Inspect the message.data dictionary: Add logging or debugging statements to examine the contents of message.data for file messages and text messages to identify any differences in schema.
  3. Update the adapter to handle file messages: Modify the adapter to correctly extract the file content from the message.data dictionary, if necessary, and ensure it is properly passed to the gateway.run inbound dispatcher.
  4. Test with different file types: Verify that the updated adapter can handle various file types, such as PDF and DOCX, to ensure the fix is not specific to a particular file type.

Example

# Example of how to log the message.data dictionary for debugging
import logging

# ...

def handle_message(message):
    logging.debug("Message data: %s", message.data)
    # ...

Notes

The issue may be related to the NoneType warning and the missing card_template_id configuration, but these are likely separate issues that should be addressed independently.

Recommendation

Apply a workaround by modifying the DingTalk adapter to correctly handle file messages, as the root cause appears to be a bug in the adapter's message handling.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING