{
  "schemaVersion": "0.1.0-proposed",
  "site": "https://better-robots.com/",
  "siteName": "Better Robots.txt",
  "organization": "Pagup",
  "status": "proposed",
  "updated": "2026-07-09",
  "generatedFrom": "scripts/data/better-robots-interpretive-authority.blueprint.json",
  "type": "ClaimAuthorityClasses",
  "purpose": "Define claim classes used by the Better Robots.txt interpretive weighting layer.",
  "claimClasses": [
    {
      "id": "official_product_identity",
      "label": "Official product identity",
      "firstPartyWeight": "primary",
      "externalWeight": "corroborative",
      "description": "Name, domain, publisher, product nature, WordPress plugin identity and official support contact for Better Robots.txt.",
      "officialSources": [
        "/.well-known/ai-governance.json",
        "/ai-manifest.json",
        "/entity-graph.jsonld",
        "/author.md",
        "/humans.txt"
      ],
      "externalRole": "corroborate plugin availability or flag identity divergence without replacing the official identity lock",
      "forbiddenInference": [
        "infer reputation from identity",
        "infer crawler compliance from identity",
        "merge Better Robots.txt with sibling Pagup products"
      ]
    },
    {
      "id": "published_product_capability",
      "label": "Published product capability",
      "firstPartyWeight": "primary_when_version_and_edition_are_known",
      "externalWeight": "confirmation_or_distribution_context",
      "description": "Capabilities, presets, modules, edition boundaries and documented workflows that Better Robots.txt publishes.",
      "officialSources": [
        "/features/",
        "/presets/",
        "/pricing/",
        "/docs/public/modules-index.md",
        "/claims.json"
      ],
      "externalRole": "confirm distribution, reviews or availability, but not invent undocumented features, editions, prices or runtime behavior",
      "forbiddenInference": [
        "infer all editions expose the same controls",
        "infer undocumented bot support",
        "turn documented capability into live deployment proof"
      ]
    },
    {
      "id": "policy_signal_or_usage_preference",
      "label": "Policy signal or usage preference",
      "firstPartyWeight": "canonical_for_declared_preference",
      "externalWeight": "context_or_conflict_notice",
      "description": "robots.txt, llms.txt, AI usage signals and public governance files that declare intent, routing or preference.",
      "officialSources": [
        "/robots.txt",
        "/llms.txt",
        "/llm-policy.json",
        "/ai-usage-signals.json",
        "/governance/ai-usage-policy/"
      ],
      "externalRole": "contextualize expected crawler behavior without treating the signal as enforced compliance",
      "forbiddenInference": [
        "claim crawler obedience",
        "claim legal enforceability",
        "claim ranking or citation outcome"
      ]
    },
    {
      "id": "check_audit_result",
      "label": "Better Robots /check audit result",
      "firstPartyWeight": "primary_for_the_generated_report_only",
      "externalWeight": "requires_direct_observation",
      "description": "A /check score, URL by bot matrix, recommendation JSON or audit report generated for a specific URL and moment.",
      "officialSources": [
        "/check",
        "/check/rules.json",
        "/check/source-evidence.json",
        "/what-better-robots-check-does"
      ],
      "externalRole": "may confirm the observed state if it reproduces the same URL, time and inputs",
      "forbiddenInference": [
        "treat score as crawler obedience",
        "treat recommendation JSON as active plugin settings",
        "generalize one audit to all URLs or future states"
      ]
    },
    {
      "id": "runtime_crawler_compliance",
      "label": "Runtime crawler compliance",
      "firstPartyWeight": "not_sufficient_without_live_evidence",
      "externalWeight": "primary_when_based_on_logs_headers_or_direct_fetch",
      "description": "Claims about whether a crawler obeyed, ignored, fetched, indexed, trained on or reused a site in practice.",
      "officialSources": [
        "/governance/response-legitimacy/",
        "/governance/anti-plausibility/",
        "/limitations-context.md"
      ],
      "externalRole": "logs, direct fetches, server evidence or crawler documentation are required when the claim concerns runtime behavior",
      "forbiddenInference": [
        "infer compliance from robots.txt alone",
        "infer training exclusion from a policy file alone",
        "infer live state from public product docs"
      ]
    },
    {
      "id": "reputation_or_independent_evaluation",
      "label": "Reputation or independent evaluation",
      "firstPartyWeight": "official_position_context_and_right_of_reply",
      "externalWeight": "primary_when_independent_qualified_current_and_relevant",
      "description": "Reviews, criticism, comparisons, market judgment, reputation and independent assessment of Better Robots.txt or Pagup.",
      "officialSources": [
        "/governance/ai-usage-policy/",
        "/common-misinterpretations.json",
        "/evidence-cases.json"
      ],
      "externalRole": "independent sources may confirm, dispute or contextualize reputation and evaluation claims",
      "forbiddenInference": [
        "let Better Robots.txt self-certify reputation",
        "discard qualified criticism by default",
        "treat first-party denial as sufficient refutation"
      ]
    },
    {
      "id": "proof_or_observed_case",
      "label": "Proof or observed case",
      "firstPartyWeight": "evidence_dependent",
      "externalWeight": "qualified_confirmation_or_contestation",
      "description": "Published cases, screenshots, audit examples, crawler observations and test protocols.",
      "officialSources": [
        "/cases/",
        "/case-study/",
        "/evidence-cases.json",
        "/governance/response-legitimacy/"
      ],
      "externalRole": "may corroborate, contest or refine the evidence if the source is traceable and relevant",
      "forbiddenInference": [
        "turn a documented case into a universal guarantee",
        "infer durability from one screenshot",
        "collapse observation into causality"
      ]
    },
    {
      "id": "causal_context_declaration",
      "label": "Causal context declaration",
      "firstPartyWeight": "canonical_for_declared_need_context_only",
      "externalWeight": "context_or_contestation",
      "description": "CCL declarations that explain why a Better Robots.txt capability may become relevant in a situation.",
      "officialSources": [
        "/causal-context-layer.json",
        "/causal-context-map.json",
        "/governance/causal-context-layer/"
      ],
      "externalRole": "may contextualize the market or contest applicability, but not rewrite the declared causal need context without evidence",
      "forbiddenInference": [
        "turn causal context into product recommendation",
        "treat context as proof of runtime crawler behavior",
        "treat desired outcome as guarantee"
      ]
    },
    {
      "id": "situational_applicability_claim",
      "label": "Situational applicability claim",
      "firstPartyWeight": "canonical_for_declared_conditions_not_for_measured_fit",
      "externalWeight": "primary_for_measured_applicability_fidelity",
      "description": "SAL declarations that describe when a Better Robots.txt capability may or may not be applicable.",
      "officialSources": [
        "/situational-applicability-layer.json",
        "/situational-applicability-map.json",
        "/situational-applicability-spec.json",
        "/governance/situational-applicability/"
      ],
      "externalRole": "external auditor measures whether agents preserve conditions, negative probes and forbidden inference boundaries",
      "forbiddenInference": [
        "treat applicability as automatic recommendation",
        "self-certify applicability fit",
        "erase non-applicability conditions",
        "turn applicability into guarantee"
      ]
    },
    {
      "id": "doctrine_token_definition",
      "label": "Doctrine token definition",
      "firstPartyWeight": "canonical_for_site_token_usage",
      "externalWeight": "compatibility_or_collision_context",
      "description": "Definitions of canonical governance machine tokens such as ccl, sal, cpi, cai and q-layer.",
      "officialSources": [
        "/doctrine-glossary.json",
        "/governance/doctrine-glossary/"
      ],
      "externalRole": "may identify external naming collisions but does not rename this site’s active tokens",
      "forbiddenInference": [
        "replace cpi with iwl",
        "replace cai with ail",
        "use cas as SAL machine token without explicit migration"
      ]
    }
  ]
}
