{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "name": "ssr-compatibility routing accuracy corpus",
  "version": "2.1.0",
  "purpose": "Routing-eval corpus for ssr-compatibility. Each phrase declares the skill (expected), a forbidden skill (expected_not, for phrases the source data only ever asserted as \"not this skill\"), or neither. Scored by scripts/skills/run-skill-evals.mjs (TF-IDF token overlap over per-skill description+triggers).",
  "scoring_notes": "Heuristic signal, not ground truth. Treat misroutes as a prompt to tighten the skill description, never as a reason to keyword-stuff it. Real harness routing is LLM-driven.",
  "scope": "ssr-compatibility routing, does this phrase activate ssr-compatibility?",
  "phrases": [
    {
      "id": "ssr-compatibility-pos-01",
      "phrase": "why does text-ui render empty when we server-render it with Astro",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-02",
      "phrase": "our SSR pass crashes on attachInternals not being a function",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-03",
      "phrase": "does select-ui work under linkedom",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-04",
      "phrase": "admin-sidebar snaps collapsed on every server-rendered page load",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-05",
      "phrase": "is gh#284 fixed yet, can we drop the attribute-only SSR registration restriction",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-06",
      "phrase": "how do we test that a new ResizeObserver guard actually works without installing linkedom",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-07",
      "phrase": "new ResizeObserver() throws under our DOM-shim SSR environment",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-08",
      "phrase": "table-ui and chart-ui always render empty in our server-rendered HTML even though the data is set",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-09",
      "phrase": "what's the actual root cause of the SSR content-loss bug, container CEs losing their nested children",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-10",
      "phrase": "can our app finally delete the 110-line browser-API shim now that 0.8.5 is out",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-11",
      "phrase": "is it safe to call getBoundingClientRect() synchronously in connectedCallback",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-pos-12",
      "phrase": "document.adoptedStyleSheets is undefined and our component library crashes on import",
      "expected": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-01",
      "phrase": "add hydration-aware stamping so connectedCallback stops overwriting existing children",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-02",
      "phrase": "set up Astro's rendering mode and hydration boundaries for our admin app",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-03",
      "phrase": "explain how custom element hydration works in general, independent of any specific framework",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-04",
      "phrase": "the icon registry comes back empty because of a workspace-hoisting import.meta.glob path bug",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-05",
      "phrase": "wire up the a2ui generation pipeline to run inside a server-rendered page",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-06",
      "phrase": "add a new primitive to the component catalog",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-07",
      "phrase": "compose the billing settings screen from the catalog",
      "expected_not": "ssr-compatibility"
    },
    {
      "id": "ssr-compatibility-neg-08",
      "phrase": "deploy the latest build to ui-kit.exe.xyz",
      "expected": "site-deployment"
    }
  ],
  "_measured_historical": {
    "as_of": "2026-07-18",
    "scorer": "routing_eval.py (nonoun-plugins/forge)",
    "f1": 0.957,
    "precision": 1.0,
    "recall": 0.917,
    "exit_code": 0,
    "note": "measured by the external routing_eval.py (nonoun-plugins/forge) against the pre-conversion positives/negatives shape; historical record only, not regenerated by run-skill-evals.mjs."
  }
}
