undefined reference to claw_* | missing source in Meson or wrong feature guard | check meson.build includes the .c file |
implicit declaration of function | missing include or wrong public header | check include order and exported headers |
redefinition of macro | claw_config.h vs generated config conflict | check config guards and Meson options |
multiple definition of | function body in header without static inline | move implementation to .c or mark inline |
FreeRTOS/RT-Thread/Zephyr include inside claw/ | OSAL boundary violation | move RTOS dependency to osal/<rtos>/ |
DHCP timeout or dhcp_fine_tmr | QEMU network setup issue | inspect QEMU -nic options |
DNS resolution failed | no DNS in QEMU or wrong network config | use scripts/api-proxy.py when needed |
TLS handshake failed or esp_tls | ESP32 QEMU TLS limitation | route through scripts/api-proxy.py |
HTTP 503 | API endpoint, rate limit, or token problem | verify endpoint and credentials outside commits |
Stack overflow or pxCurrentTCB | task stack too small | inspect task creation stack sizes |
Data Abort or Prefetch Abort | NULL pointer or bad memory access | rerun QEMU with GDB=1 |
Guru Meditation | ESP-IDF crash, watchdog, stack, or allocation issue | decode backtrace and inspect task state |
| watchdog timeout | blocking call, deadlock, or undersized task stack | check mutexes and long blocking calls |
Feishu no connection detected | WebSocket endpoint or token issue | verify app ID/secret and endpoint |
Telegram HTTP 503 | bot token, API, or rate limit issue | verify with Telegram getMe |
connection reset by peer | TLS version or proxy issue | check whether api-proxy.py is running |
QEMU boot test failed | boot regression or network-dependent boot path | inspect boot banner and test profile |
scripts/check-patch.sh failure | style, line length, comments, or whitespace | rerun staged style check |
| DCO failure | missing Signed-off-by | recommit with git commit -s |