{% extends "base.html" %} {% block title %}Monitoring - ICDEV™ Dashboard{% endblock %} {% block content %}
System health, alerts, and self-healing activity
flowchart TD
F[Failure Detected] --> A{Confidence
Level?}
A -->|">= 0.7"| AUTO[Auto-Remediate]
A -->|"0.3 - 0.7"| SUGGEST[Suggest Fix
Await Approval]
A -->|"< 0.3"| ESC[Escalate with
Full Context]
AUTO --> CHECK{"Heals/hr
< 5?"}
CHECK -->|Yes| HEAL[Execute
Remediation]
CHECK -->|No| COOL[Cooldown
10 min]
HEAL --> LOG[Log to
Audit Trail]
SUGGEST --> LOG
ESC --> LOG
style AUTO fill:#1a3a2d,stroke:#28a745,color:#e0e0e0
style ESC fill:#3a1a1a,stroke:#dc3545,color:#e0e0e0
style SUGGEST fill:#3a3a1a,stroke:#ffc107,color:#e0e0e0
| WATCHCON | Severity | Title | {# The cause, the budget and the PR were only ever in the alert's `description`, which this table never rendered. They are the facts that decide which remediation can work, so on 2026-08-10 they were read out of the database while 12 alerts were cleared by hand. #}Cause | Budget | PR | Seen | Source | Created | Action |
|---|---|---|---|---|---|---|---|---|---|
| W{{ alert.watchcon_tier or 4 }} | {{ alert.severity }} | {{ alert.title }} {% if alert.is_stale %} {# The sweep in pr_watcher clears these; this is the window between the task finishing and the next poll — and the backstop for any case the sweep does not reach. #} stale {% endif %} | {% if alert.hitl %} {{ alert.hitl.cause_label }} {% else %} — {% endif %} | {{ alert.hitl.cycle_display if alert.hitl and alert.hitl.cycle_display else '—' }} | {% if alert.hitl and alert.hitl.pr_url %} #{{ alert.hitl.pr_number or 'PR' }} {% else %} — {% endif %} | {# Re-fire churn. The #1513 flap wrote 27 rows for one task in a day and this page could not show it. #} {% if alert.refire_count and alert.refire_count > 1 %} re-fired {{ alert.refire_count }}× {% else %} once {% endif %} | {{ alert.source }} | {{ alert.created_at }} |
{# Only a pr_watcher HITL alert names a task these verbs can
act on. Every other alert source gets no buttons rather
than buttons that would fail — an control that does
nothing teaches people to distrust the ones that work.
Same reasoning, applied to the CAUSE: rebase_and_push
refuses a real conflict, so offering Rebase there is a
control that cannot work either. #}
{% if alert.source and alert.source.startswith('pr_watcher:hitl:') %}
{% if alert.rebase_refusal %}
{% else %}
{% endif %}
{% if alert.rebase_refusal %}{{ alert.rebase_refusal }}{% endif %}
{% else %}
—
{% endif %}
|
| WATCHCON | Severity | Title | Source | Project | Status | Auto-Healed | Created |
|---|---|---|---|---|---|---|---|
| W{{ alert.watchcon_tier or 4 }} | {{ alert.severity }} | {{ alert.title }} | {{ alert.source }} | {% if alert.project_id %} {{ alert.project_id[:12] }} {% else %} — {% endif %} | {{ alert.status }} | {% if alert.auto_healed %} Yes {% else %} No {% endif %} | {{ alert.created_at }} |
| No recent alerts | |||||||
| Trigger Source | Pattern | Action Taken | Outcome | Duration (s) | Escalated To | Created | |
|---|---|---|---|---|---|---|---|
| {{ event.trigger_source }} | {{ event.pattern_description or '—' }} | {{ event.action_taken or '—' }} | {% if event.outcome %} {{ event.outcome }} {% else %} — {% endif %} | {{ event.duration_seconds or '—' }} | {{ event.escalated_to or '—' }} | {{ event.created_at }} | |
| No self-healing events recorded | |||||||