import { useSearchParams } from "react-router"; import { qs, type Debt } from "../api"; import { useFetch } from "../hooks"; import { Badge, ErrorBox, Loading } from "../components/ui"; import { DebtTable } from "../components/shared"; export default function DebtPage() { const [sp, setSp] = useSearchParams(); const status = sp.get("status") ?? "open", severity = sp.get("severity") ?? ""; const { data, error, loading, reload } = useFetch<{ debt: Debt[]; summary: { severity: string; kind: string; n: number }[] }>(`debt${qs({ status, severity })}`); const set = (k: string, v: string) => setSp((p) => { const n = new URLSearchParams(p); if (v) n.set(k, v); else n.delete(k); return n; }); return (

Knowledge Debt

Opaque MCP, inferred schemas, undocumented endpoints, missing snapshots, untested clients, stale contracts, unresolved licenses. Critical debt blocks verified research export.

{data &&
{data.summary.map((s) => {s.kind}: {s.n})}
}
{loading && } {data && }
); }