{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "name": "site-deployment routing accuracy corpus",
  "version": "2.1.0",
  "purpose": "Routing-eval corpus for site-deployment. 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": "site-deployment routing, does this phrase activate site-deployment?",
  "phrases": [
    {
      "id": "site-deployment-pos-01",
      "phrase": "deploy the latest build to ui-kit.exe.xyz",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-02",
      "phrase": "push the dist folder to the VM",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-03",
      "phrase": "diagnose why the site returns Port 8000 unbound",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-04",
      "phrase": "the site is throwing a 502, check the VM service",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-05",
      "phrase": "restart the adia-ui service on the exe.dev VM",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-06",
      "phrase": "provision a fresh exe.dev VM for a new host",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-07",
      "phrase": "rotate the API keys on the production VM",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-08",
      "phrase": "push a site-v* tag to deploy the current build",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-09",
      "phrase": "the site looks stale, new fixtures are 404ing",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-10",
      "phrase": "check the dry-run delete summary before the deploy job runs",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-11",
      "phrase": "did we deploy the site after the last lockstep cut, or is it behind npm",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-pos-12",
      "phrase": "roll back the last site deploy, the new build is broken",
      "expected": "site-deployment"
    },
    {
      "id": "site-deployment-neg-01",
      "phrase": "cut a release of the next version and publish the npm packages",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-02",
      "phrase": "verify that this consumer app screen renders correctly before shipping",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-03",
      "phrase": "add a new prop to button-ui",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-04",
      "phrase": "run a dogfood sweep on the demo pages",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-05",
      "phrase": "tune the zettel retrieval coverage, eval dropped to 38%",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-06",
      "phrase": "publish the npm packages for the next lockstep cut",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-07",
      "phrase": "author the release notes and the migration guide",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-08",
      "phrase": "why does accordion-ui crash under SSR in Astro",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-09",
      "phrase": "fix the streaming adapter bug in the llm package",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-10",
      "phrase": "review the getting-started docs page for consistency",
      "expected_not": "site-deployment"
    },
    {
      "id": "site-deployment-neg-11",
      "phrase": "score the gen-ui gallery outputs for this cycle",
      "expected_not": "site-deployment"
    }
  ],
  "_measured_historical": {
    "as_of": "2026-07-18",
    "scorer": "routing_eval.py (nonoun-plugins/forge)",
    "f1": 0.917,
    "precision": 0.917,
    "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."
  }
}
