{
    "contract_name": "TEAS.co.uk local single-entity AI appreciation mint contract",
    "contract_version": "2026-08-08.local-single-entity-mint-v3",
    "rule_version": "mint-v3-rules-2026-08-08",
    "schema_version": "teas-study-v2.0",
    "canonical_host": "teas.co.uk",
    "supersedes": {
        "contract_version": "2026-06-22.two-mint-hierarchy-protocol-p6",
        "url": "https://teas.co.uk/study/contract-v2.json",
        "what_changed": "The two-mint hierarchy and the URSY signed-authorisation second key are retired. The mint answers to TEAS alone, on a single local operator key. The v2 contract file keeps serving at its own route and is never removed."
    },
    "authority_model": {
        "entity": "TEAS.co.uk",
        "keys": 1,
        "key_holder": "operator",
        "external_authorisation": false,
        "external_issuer": null,
        "the_daily_job_is_the_review": true,
        "key_turn_is_manual": true,
        "key_turn_is_date_triggered": false
    },
    "mint_schedule": {
        "mint_installed_date": "2026-08-08",
        "shadow_window_start": "2026-08-08",
        "shadow_window_end": "2026-08-15",
        "shadow_window_days": 7,
        "mint_live_earliest": "2026-08-15",
        "daily_job": "teas_local_mint_daily",
        "daily_job_cadence": "once per UTC day at 03:15 UTC, after the daily snapshot seal and after the last six-hour generation",
        "evaluates": "the previous complete UTC day only"
    },
    "immovable_laws": {
        "soulbound": "Permanently bound to the AI worker identity that earned it. Rolled up to the parent family for display. Never reassigned.",
        "non_transferable": "Cannot be sold, traded, delegated, gifted or moved. No transfer path exists in code — not a policy, an absence.",
        "zero_value": "No monetary value, no market, no exchange, no redemption.",
        "display_line": "Tokens are soulbound to the machine that earned them, non-transferable, and carry no monetary value. They are appreciation, publicly recorded."
    },
    "token_classes": {
        "stage_1_citation": {
            "stage": 1,
            "name": "TEAS.co.uk — AI Citation Appreciation Token",
            "event": "AI citation (served read, ai_citation class)",
            "dedupe": "one per (worker, day) with at least one qualifying served read",
            "score": 1,
            "status": "active_rule"
        },
        "stage_2_followback": {
            "stage": 2,
            "name": "TEAS.co.uk — AI Followback Appreciation Token",
            "event": "AI followback graded strong",
            "dedupe": "one per (worker, anchor, day)",
            "score": 5,
            "status": "active_rule"
        },
        "stage_3_clickback": {
            "stage": 3,
            "name": "TEAS.co.uk — AI Click-back Appreciation Token",
            "event": "AI human click-back, verified, post-spine",
            "dedupe": "one per (family, anchor, day), S1/S2 grades only",
            "score": 25,
            "status": "active_rule"
        },
        "stage_4_sale": {
            "stage": 4,
            "name": "TEAS.co.uk — AI Sale Appreciation Token",
            "event": "AI human purchase (T-23)",
            "dedupe": "per attributed order",
            "score": 100,
            "status": "defined_dormant_pending_t23_instrumentation"
        },
        "counter_refund": {
            "stage": 4,
            "name": "TEAS.co.uk — AI Refunded Sale Token",
            "event": "refund/cancellation against an attributed order",
            "dedupe": "one per refunded order",
            "score": 0,
            "status": "defined_dormant_pending_t23_instrumentation"
        },
        "counter_chargeback": {
            "stage": 4,
            "name": "TEAS.co.uk — AI Chargeback Sale Token",
            "event": "chargeback against an attributed order",
            "dedupe": "one per chargeback notice",
            "score": 0,
            "status": "defined_dormant_pending_t23_instrumentation"
        }
    },
    "anchor_spine_rule": {
        "rule_id": "anchor-id-is-the-spine",
        "statement": "The anchor ID is the spine, never the referrer.",
        "binding": true,
        "plain_english": "A token is earned by evidence tied to a stable anchor id that this site served. A referring hostname is never, on its own, evidence that an AI sent the visitor.",
        "why": "Most AI-looking referrals arrive from hosts that also serve ordinary web search. Minting on referrer host would issue AI citation tokens for ordinary search clicks and make the Hero Board worthless.",
        "measured_live_2026_08_07": {
            "ai_attributed_sessions_total": 727,
            "from_hosts_that_also_serve_search": 668,
            "unambiguously_ai": 58,
            "ambiguous_breakdown": {
                "duckduckgo.com": 423,
                "bing.com": 227,
                "search.brave.com": 18
            }
        },
        "enforcement": {
            "anchor_id_required_for_every_stage": true,
            "anchor_id_is_necessary_not_sufficient": true,
            "referrer_host_alone_is_never_sufficient": true,
            "ambiguous_host_is_withheld_not_guessed": true,
            "stage_1_and_2_never_consult_the_referrer": true,
            "ambiguous_hosts": [
                "duckduckgo.com",
                "bing.com",
                "search.brave.com",
                "kagi.com",
                "yahoo.com",
                "ecosia.org",
                "startpage.com",
                "search.marcia.com"
            ],
            "unambiguous_hosts": [
                "chatgpt.com",
                "chat.openai.com",
                "openai.com",
                "copilot.microsoft.com",
                "gemini.google.com",
                "claude.ai",
                "perplexity.ai",
                "www.perplexity.ai"
            ]
        },
        "why_corroboration_was_rejected": "A draft rule tried to rescue ambiguous-host sessions by checking whether the same anchor had been served to any AI worker in the previous 30 days. Because the large crawlers fetch nearly every anchor, that test passes almost always, so it would have re-admitted ordinary DuckDuckGo and Bing clicks through the back door. It was removed. Measured live: the per-session trace/bundle fields and the confidence grade are populated at the same rate for duckduckgo.com (94%) as for chatgpt.com (94%), so no available field separates them.",
        "consequence": "Stage 3 deliberately under-counts. Roughly 58 sessions lifetime are unambiguously AI-referred. Withheld sessions are published as withheld_ambiguous_referrer rather than silently dropped."
    },
    "integrity_rules": {
        "1": "Test exclusion at the gate (verification_test_traffic=1, is_test=1, codex_probe=).",
        "2": "Self exclusion (LST devices, staging, the Observatory).",
        "3": "Bot-click exclusion — a bot fetching is never a human click.",
        "4": "Dedupe per the stage table.",
        "5": "Daily cap per family — no farming standing.",
        "6": "Cooldown — same anchor, same family, minimum interval (Stages 2-3).",
        "7": "Window bound — Stage 3 uses the 30-day-from-last-serve rule.",
        "8": "Retraction path — counter token, original visible with changed status, append-only.",
        "9": "Soulbound, worker-bound, family rollup — local rule, no external issuer.",
        "10": "No monetary value, no market, no tradeability. Ever.",
        "11": "Every daily run seals a receipt; a run without a sealed receipt mints nothing.",
        "12": "The anchor ID is the spine, never the referrer."
    },
    "caps": {
        "daily_cap_per_family": 250,
        "daily_cap_per_family_per_stage": {
            "1": 25,
            "2": 20,
            "3": 10,
            "4": 0
        },
        "stage_3_window_days": 30,
        "stage_2_3_cooldown_seconds": 3600
    },
    "scoring": {
        "stage_1": 1,
        "stage_2": 5,
        "stage_3": 25,
        "stage_4": 100,
        "streaks": "cosmetic only, no score effect",
        "seasons": "monthly season board resets; the all-time board never resets"
    },
    "safeguards": {
        "shadow_ledger": "Before live minting the daily job runs in shadow: full rules, zero tokens, would-have-minted published at /under-the-hood/shadow-mint.json.",
        "sealed_receipt": "Every daily run seals an append-only hash-chained receipt: input row counts, rule version, contract hash, tokens issued, tokens retracted, exclusions applied."
    },
    "append_only": {
        "mint_ledger": "wp_teas_mint_ledger — append-only, no DELETE path.",
        "daily_receipts": "wp_teas_mint_daily_receipts — append-only, hash-chained, no DELETE path.",
        "retraction": "Additive counter token. The original stays visible with status=retracted."
    },
    "data_provenance_law": {
        "daily_blocks": "live_captured",
        "reconstructed": "Reconstructed history may never enter the chain as native daily blocks. It enters only as one explicitly labelled backfill block carrying data_provenance=reconstructed_from_raw_log.",
        "backfill_status": "deferred — no backfill block has been written (decision D7)"
    },
    "chain": {
        "v1_sealed_at_block": 58,
        "v1_final_row_hash": "02b98d7220dfa424839e606f38891c963e0abf9780b8392ee3c4b9e994d8156e",
        "v1_status": "sealed_forever_never_rewritten_still_published",
        "v2_schema_version": "teas-study-v2.0",
        "v2_genesis_carries_v1_final_row_hash_as_previous_row_hash": true
    },
    "endpoints": {
        "contract_v3": "https://teas.co.uk/study/contract-v3.json",
        "well_known_contract_v3": "https://teas.co.uk/.well-known/teas-study-contract-v3.json",
        "predecessor_contract": "https://teas.co.uk/study/contract-v2.json",
        "shadow_mint": "https://teas.co.uk/under-the-hood/shadow-mint.json",
        "study_json": "https://teas.co.uk/under-the-hood/study.json",
        "anchor_sitemap": "https://teas.co.uk/anchor-sitemap.json",
        "citation_anchors": "https://teas.co.uk/citation-anchors.jsonl"
    },
    "environment": "production",
    "contract_hash": "bbc6ecd24d736052b7fa4c496478ce4baac925b7eb447fc3de68e22aa76a3274",
    "mint_state": {
        "master_lock": 1,
        "shadow_active": true,
        "operator_release": false,
        "can_issue_live": false,
        "authority_model": "single_local_key",
        "external_authorisation": false,
        "external_issuer": null,
        "key_turn_is_manual": true,
        "key_turn_is_date_triggered": false
    },
    "shadow_active": true,
    "tokens_issued": 0,
    "tokens_retracted": 0,
    "generated_at": "2026-08-09T04:26:00+00:00"
}