{
  "sites": 1987,
  "multistep": 1403,
  "pages_measured": 2982,
  "tactics_total": 25,
  "evidence": 12268,
  "avg_tactics": 3.6,
  "pct_lack": {
    "proof_saturation": 99,
    "free_gift_stack": 100,
    "countdown_urgency": 99,
    "anchor_discount": 95,
    "subscription_default": 100,
    "per_serving_anchor": 100,
    "comparison_table": 83,
    "review_wall": 95,
    "express_checkout": 98,
    "free_shipping_offer": 96,
    "guarantee": 98,
    "faq_objection": 34,
    "proof_above_fold": 84,
    "free_trial": 45,
    "trusted_by_logos": 41,
    "usage_proof": 88,
    "pricing_tiers": 65,
    "demo_docs": 76,
    "lead_magnet": 100,
    "lead_form": 83,
    "outbound_offer": 100,
    "affiliate_disclosure": 98,
    "ranked_list": 94,
    "scarcity_stock": 95,
    "press_features": 74
  },
  "pattern_rates": {
    "affiliate_disclosure": {
      "present": 31,
      "evaluated_n": 129,
      "pct_present": 24,
      "pct_absent": 76,
      "corpus_n": 1987,
      "applies_to": [
        "affiliate"
      ]
    },
    "anchor_discount": {
      "present": 99,
      "evaluated_n": 187,
      "pct_present": 53,
      "pct_absent": 47,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "comparison_table": {
      "present": 335,
      "evaluated_n": 1987,
      "pct_present": 17,
      "pct_absent": 83,
      "corpus_n": 1987,
      "applies_to": null
    },
    "countdown_urgency": {
      "present": 15,
      "evaluated_n": 187,
      "pct_present": 8,
      "pct_absent": 92,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "demo_docs": {
      "present": 481,
      "evaluated_n": 1404,
      "pct_present": 34,
      "pct_absent": 66,
      "corpus_n": 1987,
      "applies_to": [
        "saas",
        "lead_gen"
      ]
    },
    "express_checkout": {
      "present": 32,
      "evaluated_n": 187,
      "pct_present": 17,
      "pct_absent": 83,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "faq_objection": {
      "present": 1313,
      "evaluated_n": 1987,
      "pct_present": 66,
      "pct_absent": 34,
      "corpus_n": 1987,
      "applies_to": null
    },
    "free_gift_stack": {
      "present": 0,
      "evaluated_n": 187,
      "pct_present": 0,
      "pct_absent": 100,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "free_shipping_offer": {
      "present": 73,
      "evaluated_n": 187,
      "pct_present": 39,
      "pct_absent": 61,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "free_trial": {
      "present": 1090,
      "evaluated_n": 1396,
      "pct_present": 78,
      "pct_absent": 22,
      "corpus_n": 1987,
      "applies_to": [
        "saas"
      ]
    },
    "guarantee": {
      "present": 31,
      "evaluated_n": 187,
      "pct_present": 17,
      "pct_absent": 83,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "lead_form": {
      "present": 346,
      "evaluated_n": 1404,
      "pct_present": 25,
      "pct_absent": 75,
      "corpus_n": 1987,
      "applies_to": [
        "lead_gen",
        "saas"
      ]
    },
    "lead_magnet": {
      "present": 1,
      "evaluated_n": 8,
      "pct_present": 13,
      "pct_absent": 88,
      "corpus_n": 1987,
      "applies_to": [
        "lead_gen"
      ]
    },
    "outbound_offer": {
      "present": 7,
      "evaluated_n": 129,
      "pct_present": 5,
      "pct_absent": 95,
      "corpus_n": 1987,
      "applies_to": [
        "affiliate"
      ]
    },
    "per_serving_anchor": {
      "present": 9,
      "evaluated_n": 187,
      "pct_present": 5,
      "pct_absent": 95,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "press_features": {
      "present": 514,
      "evaluated_n": 1979,
      "pct_present": 26,
      "pct_absent": 74,
      "corpus_n": 1987,
      "applies_to": null
    },
    "pricing_tiers": {
      "present": 704,
      "evaluated_n": 1396,
      "pct_present": 50,
      "pct_absent": 50,
      "corpus_n": 1987,
      "applies_to": [
        "saas"
      ]
    },
    "proof_above_fold": {
      "present": 315,
      "evaluated_n": 1987,
      "pct_present": 16,
      "pct_absent": 84,
      "corpus_n": 1987,
      "applies_to": null
    },
    "proof_saturation": {
      "present": 28,
      "evaluated_n": 187,
      "pct_present": 15,
      "pct_absent": 85,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "ranked_list": {
      "present": 114,
      "evaluated_n": 129,
      "pct_present": 88,
      "pct_absent": 12,
      "corpus_n": 1987,
      "applies_to": [
        "affiliate"
      ]
    },
    "review_wall": {
      "present": 92,
      "evaluated_n": 187,
      "pct_present": 49,
      "pct_absent": 51,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "scarcity_stock": {
      "present": 101,
      "evaluated_n": 1979,
      "pct_present": 5,
      "pct_absent": 95,
      "corpus_n": 1987,
      "applies_to": null
    },
    "subscription_default": {
      "present": 0,
      "evaluated_n": 187,
      "pct_present": 0,
      "pct_absent": 100,
      "corpus_n": 1987,
      "applies_to": [
        "ecommerce"
      ]
    },
    "trusted_by_logos": {
      "present": 1180,
      "evaluated_n": 1556,
      "pct_present": 76,
      "pct_absent": 24,
      "corpus_n": 1987,
      "applies_to": [
        "saas",
        "lead_gen",
        "affiliate",
        "content"
      ]
    },
    "usage_proof": {
      "present": 240,
      "evaluated_n": 1556,
      "pct_present": 15,
      "pct_absent": 85,
      "corpus_n": 1987,
      "applies_to": [
        "saas",
        "lead_gen",
        "affiliate",
        "content"
      ]
    }
  },
  "pattern_rates_note": "pattern_rates[id] carries the numerator AND its denominator: `present` of `evaluated_n` funnels the detector was actually run on (its appliesTo type gate, AND crawled by an engine that had it). `pct_present`/`pct_absent` use evaluated_n. `corpus_n` is the whole corpus, for the top-level pct_lack, which uses a DIFFERENT denominator on purpose. Quote a per-pattern rate as \"present of evaluated_n\", never as a bare percentage.",
  "populations": {
    "funnels_listed": {
      "count": 1987,
      "label": "funnels x-rayed",
      "definition": "One row per slug: listed, not blocked, NOT no-funnel-found, excluded domains removed. The corpus size. Since Roentgen 1.21.0 a walk that read cleanly and found no funnel primitive at all scores NULL rather than 0 (issue 201), so it leaves this population the same way a blocked row does — every filter keys on `score IS NOT NULL`. That is a CORRECTION, not a loss: those rows were non-funnels sitting inside published band distributions."
    },
    "funnels_no_funnel_found": {
      "count": null,
      "label": "domains read cleanly with no funnel found",
      "definition": "Walks that completed on real content and surfaced ZERO funnel primitives — no cart, checkout, pricing page, signup, trial, demo, lead form or affiliate CTA. Scored NULL, band \"No funnel found\", and therefore OUTSIDE funnels_listed. THE LABEL IS A CLAIM ABOUT THE MEASUREMENT, NOT THE BUSINESS: absence of evidence cannot separate a domain with no funnel from a walk that missed one, so this is always reported as \"no funnel found within our walk\" and never as \"this site has no funnel\". Distinct from blocked (we read nothing) and from content (primitives present but below the typing threshold).",
      "why_absent": "declared but not computed on this endpoint"
    },
    "funnels_multistep": {
      "count": 1403,
      "label": "multi-step funnels measured",
      "definition": "Of funnels_listed, those whose walk reached depth 2 or more."
    },
    "funnels_typed": {
      "count": 1612,
      "label": "funnels with a captured page structure",
      "definition": "Of funnels_listed, those with a funnel_type other than content AND a stored skeleton. Counted before the skeleton is parsed, so a corrupt skeleton still counts as captured."
    },
    "funnels_parsed": {
      "count": 1612,
      "label": "funnels whose page structure could be read",
      "definition": "Of funnels_typed, those whose stored skeleton actually parsed into at least one band. The gap between this and funnels_typed is corrupt or empty skeletons, never a crawl that did not run."
    },
    "landing_pages_measured": {
      "count": 1497,
      "label": "landing pages fully measured",
      "definition": "Of funnels_typed, those whose crawl reached the footer and carries at least one non-chrome band. Counts ENTRY pages, one per funnel — not every walked page."
    },
    "funnels_template_complete": {
      "count": 1299,
      "label": "funnels whose structure could be classified",
      "definition": "Of funnels_typed, those with a hero, under half content, and a footer reached: template_eligible plus structurally_minimal. The honest denominator for template share."
    },
    "funnels_template_eligible": {
      "count": 818,
      "label": "funnels carrying a proof band",
      "definition": "Of funnels_template_complete, those with at least one proof band. What templates cluster on."
    },
    "pages_measured_all": {
      "count": 2982,
      "label": "pages fully measured",
      "definition": "EVERY walked page that reaches its footer with a non-chrome body — not one per funnel. Requires the page tier to be enabled."
    },
    "section_instances": {
      "count": null,
      "label": "section instances measured",
      "definition": "Croppable non-chrome bands across every measured page, counted once per archetype per page. One funnel contributes every page it walked, so a dedicated pricing page counts alongside its landing page.",
      "why_absent": "counted by /api/v1/sections, which walks bands for crop geometry; /corpus/stats does not traverse bands"
    },
    "funnel_specimens": {
      "count": null,
      "label": "funnels browsable in the library",
      "definition": "Of funnels_listed, those with a card the funnel library can render. Fewer than the corpus when a funnel has no usable card.",
      "why_absent": "counted at build time by build-funnel-design.js, which owns the rendered card set"
    },
    "page_specimens": {
      "count": null,
      "label": "page specimens browsable in the library",
      "definition": "Every captured landing page with a crop good enough to show as a specimen — including the ones whose structure no named shape cluster covers. Shape, type and pattern are filters over this population, never the gate that decides membership. A subset of the published page population only where a crop failed, never a recount of it.",
      "why_absent": "counted at build time by build-page-design.js from the crop manifest"
    },
    "section_specimens": {
      "count": null,
      "label": "section specimens browsable in the library",
      "definition": "Of section_instances, the bands whose crop coordinates resolve to a showable image. The gap is bands measured but not croppable, never bands that went unmeasured.",
      "why_absent": "counted at build time by build-section-design.js from the crop manifest"
    },
    "element_specimens": {
      "count": null,
      "label": "element specimens browsable in the library",
      "definition": "Cropped elements on the shelf. This tier is the control case: one manifest feeds both the library count and the stat tile, which is why its two figures already agree.",
      "why_absent": "counted at build time by build-elements.js from the element manifest"
    },
    "enterprise_measured": {
      "count": null,
      "label": "index-listed companies measured",
      "definition": "Of funnels_listed, those whose domain appears in the enterprise segment list — a published stock-index constituent list, with each domain verified against the company name on its own site. Membership is citable, never inferred.",
      "why_absent": "requires the enterprise segment list; computed by the caller that loads it"
    },
    "independent_measured": {
      "count": null,
      "label": "independent funnels measured",
      "definition": "Of funnels_listed, those NOT in the enterprise segment list. The default league population. This plus enterprise_measured equals funnels_listed exactly — a funnel is in one segment or the other, never both and never neither.",
      "why_absent": "requires the enterprise segment list; computed by the caller that loads it"
    }
  },
  "populations_note": "The canonical corpus counts. Every surface reads these; none derives its own. Keys are stable — sites/multistep/pages_measured above are the same numbers under their historical names, kept because the build pipeline reads them.",
  "pct_lack_note": "pct_lack[id] = % of ALL 1987 corpus funnels WITHOUT the tactic (whole-corpus denominator). DO NOT QUOTE IT AS AN ADOPTION RATE — for a type-specific tactic it is not one, and reading it as one has twice written off a working detector (issue 294). Use pattern_rates[id] on this same response, which carries present + evaluated_n. For the per-type view use /api/v1/patterns (prevalence.pct); the two reconcile as prevalence.corpus_pct == 100 - pct_lack[id]."
}