checking-system-logslisted
Install: claude install-skill tomcounsell/ai
# System Logs
Two surfaces. Structured bridge events live in Redis (`BridgeEvent` Popoto
model — the old `logs/bridge.events.jsonl` file is gone); plain-text service
logs live under `~/src/ai/logs/`. Always narrow by project or keyword — raw
tails of a busy bridge log bury the signal.
## Structured events (Redis)
Query via the analyzer script (respects the no-raw-Redis rule):
```bash
cd ~/src/ai && python scripts/analyze_logs.py recent 20 # recent events, correlated by request
cd ~/src/ai && python scripts/analyze_logs.py timeouts # timeout events
cd ~/src/ai && python scripts/analyze_logs.py stats # counts by type/project
```
For project-filtered queries, use the ORM directly (never raw Redis on
Popoto-managed keys):
```bash
cd ~/src/ai && python -c "
from models.bridge_event import BridgeEvent
events = [e for e in BridgeEvent.query.all() if e.project_key == 'Valor']
events.sort(key=lambda e: e.timestamp or 0, reverse=True)
for e in events[:20]:
print(e.event_type, e.chat_id, e.data)
"
```
Fields: `event_type`, `chat_id`, `project_key`, `timestamp`, `data` (dict with
`sender`, `chat`, `message_id`, ...). The bridge currently emits
`message_received`; older types (`agent_request`, `agent_response`,
`agent_timeout`, `reply_sent`) may appear in historical data. Events expire
after ~7 days (`BridgeEvent.cleanup_old`).
## Text logs (`~/src/ai/logs/`)
| File | What's in it |
|------|--------------|
| `bridge.log` / `bridge.error.log` | Telegram bridge — mes