{
  "version": "corpus-1.0.0",
  "reviewed": "2026-08-03",
  "note": "Every value here is read from the constant that governs the behaviour, not transcribed. Entries marked provisional are deliberate placeholders awaiting enough observations to replace them, and say so.",
  "sections": [
    {
      "title": "When we refuse to report a change",
      "intro": "Most of what a measurement tool gets wrong is reporting movement that is not there. These are the floors below which we say nothing moved.",
      "entries": [
        {
          "name": "Visibility score change",
          "value": "3 points",
          "source": "packages/core/src/score-delta.ts",
          "rationale": "The composite is an integer built from seven pillars, several of them sampled, so it wobbles between consecutive scans without anything having changed. PROVISIONAL: this is the smallest move we are willing to call a change, not the measured standard deviation of no-change intervals. It will be replaced by that once enough consecutive-scan pairs exist.",
          "basis": "provisional"
        },
        {
          "name": "Source citation share change",
          "value": "0.5 share-points per period",
          "source": "packages/core/src/source-trust-decay.ts",
          "rationale": "Below this a source is reported as holding steady rather than as moving in either direction.",
          "basis": "provisional"
        },
        {
          "name": "Scoring-engine version mismatch",
          "value": "Comparison refused entirely",
          "source": "packages/core/src/score-delta.ts",
          "rationale": "Two readings produced by different versions of our own scoring engine are not two measurements of the same thing. Their difference mixes the site's change with ours, so we report no delta rather than an ambiguous one. An unstamped reading is not treated as comparable to a stamped one.",
          "basis": "chosen"
        }
      ]
    },
    {
      "title": "When we withhold a number entirely",
      "intro": "A held number is not a missing feature. These are the points at which we judge the evidence too thin to publish anything.",
      "entries": [
        {
          "name": "Audit fix ranking",
          "value": "Leverage weight below 2 of 10",
          "source": "packages/core/src/audit-triage.ts",
          "rationale": "Fix weights are integers on a scale we authored, and the bottom step of a hand-authored scale carries no ordering information. A fix below the floor still appears in your audit, but with no number and no rank position: we would rather show the fix than publish a rank we cannot support. Printing a small number instead would read as a small effect, which is a different claim from an unrankable one.",
          "basis": "chosen"
        },
        {
          "name": "Audit letter grade",
          "value": "Held below 71% of components measured, and on any partial page fetch",
          "source": "packages/core/src/audit-triage.ts",
          "rationale": "A letter is the most quotable thing on a report and the least qualified. Nobody screenshots the caveat next to it, so where the evidence is thin we issue no letter at all rather than one that travels without its context. The grade covers on-page readiness only, never AI visibility overall, because a single free crawl cannot see the rest.",
          "basis": "chosen"
        },
        {
          "name": "Composite visibility score",
          "value": "Held below 5 of 7 pillars measured",
          "source": "packages/scoring",
          "rationale": "A composite built from two measured pillars is an average of what happened to be available, not a measure of visibility. We show the coverage ratio instead, and never a partial average dressed as an overall score.",
          "basis": "chosen"
        },
        {
          "name": "Checklist-vs-citations correlation",
          "value": "Held below 30 sites",
          "source": "packages/core/src/proxy-vs-proof.ts",
          "rationale": "The whole category asserts that on-site signals drive citations without publishing the correlation. Publishing ours from a handful of sites would be the same unbenchmarked claim with our name on it.",
          "basis": "chosen"
        },
        {
          "name": "Source trust direction",
          "value": "Held below 8 weeks of stored answers",
          "source": "packages/core/src/source-trust-decay.ts",
          "rationale": "A trend drawn across three weeks is a line between two points. We show the counts and withhold the arrow until the history supports one.",
          "basis": "chosen"
        },
        {
          "name": "Single source trended",
          "value": "20 citations minimum",
          "source": "packages/core/src/source-trust-decay.ts",
          "rationale": "A share computed from a handful of citations moves several points on one lucky sample.",
          "basis": "chosen"
        }
      ]
    },
    {
      "title": "What counts as your brand being mentioned",
      "intro": "Mention detection decides a number customers are judged on, so the rules are published rather than tuned quietly.",
      "entries": [
        {
          "name": "Names matched",
          "value": "Brand, asset label, hostname, plus owner-confirmed aliases",
          "source": "packages/worker/src/citation-context.ts",
          "rationale": "An engine writing a brand a different way still counts. Aliases are owner-confirmed, never inferred: an alias we applied unilaterally would be our claim about someone's brand rather than theirs.",
          "basis": "chosen"
        },
        {
          "name": "Minimum alias length",
          "value": "3 characters",
          "source": "packages/core/src/brand-alias.ts",
          "rationale": "An alias raises a measured number, so a short or common one is a lever for inflating your own score. Common words are refused outright, with the exception that genuine brands which happen to be ordinary words are still accepted.",
          "basis": "chosen"
        },
        {
          "name": "Maximum aliases",
          "value": "25",
          "source": "packages/core/src/brand-alias.ts",
          "rationale": "Not a plan limit, a correctness limit. Nobody legitimately has forty names, and a long list is where an over-matching entry hides.",
          "basis": "chosen"
        },
        {
          "name": "Alias set changed",
          "value": "History comparison refused",
          "source": "packages/core/src/brand-alias.ts",
          "rationale": "Adding a name raises the mention rate with no engine having changed behaviour. Comparing across that change would attribute our own configuration to the market.",
          "basis": "chosen"
        }
      ]
    },
    {
      "title": "Thresholds that decide a verdict",
      "intro": "Where a number becomes a word, the boundary is published.",
      "entries": [
        {
          "name": "On-site readiness called ready",
          "value": "70 of 100",
          "source": "packages/core/src/proxy-vs-proof.ts",
          "rationale": "Roughly where a heuristic checker would tell you the on-site work is done. Readiness deliberately excludes the citation result: including the outcome inside the proxy would correlate the number with itself.",
          "basis": "chosen"
        },
        {
          "name": "Citation rate called cited",
          "value": "10% of sampled answers",
          "source": "packages/core/src/proxy-vs-proof.ts",
          "rationale": "Below this, engines are effectively not returning the site as a source.",
          "basis": "chosen"
        },
        {
          "name": "Statistical significance on change",
          "value": "Fisher's exact test, 95% interval",
          "source": "packages/core/src/measured-delta.ts",
          "rationale": "Applied to every before-and-after verdict, including Vendor Check. A change inside the interval is reported as no measured change rather than as a small win.",
          "basis": "chosen"
        }
      ]
    }
  ]
}