Summary
Keep the Issues storage, API surface, and MCP tool wiring in place, but stop generating issues. Replace the dashboard card and API payload with a clearly-labeled placeholder until the rules are redesigned (see companion tracking issue).
Rationale (from discussion): the current issue rules largely restate state that's already visible elsewhere on the dashboard (partition count, phantom nodes, stale links). Worse, they bias AI consumers toward a specific diagnostic path that isn't always correct. Better to surface nothing than to surface confidently-wrong-shaped guidance.
Scope
Pipeline
- Disable the rule evaluators that write to the
issues table. Easiest path: short-circuit the evaluator entrypoint to a no-op and add a comment pointing at the tracking issue.
- Do not drop the table, schema, or the
IssueRow-style code paths. We want zero churn so the redesign can plug rules back in without a migration.
- Existing rows: clear on next ingest cycle (or one-time wipe at startup). Document the choice in the PR.
HTTP API
/v1/issues (or whatever the current endpoint is — list_active_issues route) should return:
{
"count": 0,
"issues": [],
"status": "placeholder",
"note": "Issue rules are being redesigned. See tracking issue #<TRACKING>. No issues will be reported until the new definitions land.",
"computed_at": "<iso8601>"
}
MCP tool
list_active_issues MCP tool returns the same envelope. The note field is the important part — AI consumers will see it and know not to treat absence of issues as "all clear."
Dashboard
- The Issues card stays in the layout but its body is replaced with a single muted paragraph that mirrors the API
note text, e.g.:
Issue detection is paused. The previous rules were retired pending a redesign — see tracking issue #<N>. Use the topology, partitions, and stale-links views to assess network state in the meantime.
- No counts, no severities, no list — just the placeholder text. Keep the card visible so users aren't confused by a missing section between releases.
Out of scope
- Designing the new issue rules. That work lives in the tracking issue.
- Schema or table changes.
- Removing the issues column/badge from any other view (node detail, etc.) — replace those with the same placeholder text if they reference issues directly.
Acceptance
gh api / curl against /v1/issues returns the placeholder envelope with status: "placeholder" and count: 0.
- Dashboard shows the placeholder text in the Issues card.
- MCP
list_active_issues returns the placeholder envelope.
- No rows are written to the
issues table during a full ingest cycle.
- No regression in any other view.
Summary
Keep the Issues storage, API surface, and MCP tool wiring in place, but stop generating issues. Replace the dashboard card and API payload with a clearly-labeled placeholder until the rules are redesigned (see companion tracking issue).
Rationale (from discussion): the current issue rules largely restate state that's already visible elsewhere on the dashboard (partition count, phantom nodes, stale links). Worse, they bias AI consumers toward a specific diagnostic path that isn't always correct. Better to surface nothing than to surface confidently-wrong-shaped guidance.
Scope
Pipeline
issuestable. Easiest path: short-circuit the evaluator entrypoint to a no-op and add a comment pointing at the tracking issue.IssueRow-style code paths. We want zero churn so the redesign can plug rules back in without a migration.HTTP API
/v1/issues(or whatever the current endpoint is —list_active_issuesroute) should return:{ "count": 0, "issues": [], "status": "placeholder", "note": "Issue rules are being redesigned. See tracking issue #<TRACKING>. No issues will be reported until the new definitions land.", "computed_at": "<iso8601>" }MCP tool
list_active_issuesMCP tool returns the same envelope. Thenotefield is the important part — AI consumers will see it and know not to treat absence of issues as "all clear."Dashboard
notetext, e.g.:Out of scope
Acceptance
gh api/ curl against/v1/issuesreturns the placeholder envelope withstatus: "placeholder"andcount: 0.list_active_issuesreturns the placeholder envelope.issuestable during a full ingest cycle.