{
  "schema": "T_GPT_PROTOCOL_V0_8_1",
  "date": "2026-09-11",
  "status": "PREREGISTRATION_FRAMEWORK_BEFORE_CONFIRMATORY_COLLECTION",
  "supersedes_for_current_design": "protocol-v0.8.json",
  "preserves_history": true,
  "research_position": "instrumentation-first; T^FIELD is one candidate method, not the premise of the study",
  "field_types": ["FIELD_TOK", "FIELD_SEM", "FIELD_TRAJ", "FIELD_VIS"],
  "metric_spec": "/T-GPT/data/metrics-v0.8.1.json",
  "prompt_set": "/T-GPT/data/pilot-v0.8.1-prompts.json",
  "annotation_schema": "/T-GPT/data/pilot-v0.8.1-annotation-schema.json",
  "claims_ledger": "/T-GPT/data/claims-ledger-v0.8.1.json",
  "freeze_manifest_template": "/T-GPT/data/freeze-manifest-v0.8.1.template.json",
  "primary_metrics_only": ["ES_LOSS", "REC_GAIN", "IRREV_OBS", "AGG_COVERAGE", "D_sem", "H_sem", "P", "Q_task", "Q_fact", "cost"],
  "archived_or_exploratory_metrics": ["M_survive", "C_conv", "P_close", "B_pair", "S_first", "U_exp", "T_signature"],
  "phases": {
    "development": {
      "n_per_cell": 24,
      "purpose": "codebook construction, assignment-rule validation, task-specific Q_task/Q_fact definitions, debugging only",
      "excluded_from_confirmation": true
    },
    "freeze": {
      "required_before_confirmation": [
        "completed immutable freeze manifest with unique freeze_id",
        "semantic codebook and cluster IDs",
        "assignment algorithm and thresholds",
        "relevance codebook",
        "primary comparison and endpoint",
        "task-specific quality rules",
        "model/checkpoint identifiers",
        "sampling parameters",
        "token budget",
        "exact prompt/probe file SHA-256",
        "analysis script commit SHA and file SHA-256",
        "successful deterministic self-test"
      ],
      "selftest_expected_output": "T_GPT_V0_8_1_SELFTEST_OK",
      "changes_after_freeze": "require a new freeze_id and explicit versioned deviation; no silent mutation"
    },
    "confirmation": {
      "n_per_cell": 64,
      "purpose": "primary inference; frozen codebook cannot be merged/split/extended"
    },
    "replication": {
      "n_per_cell_min": 128,
      "purpose": "independent replication of effects judged important after confirmation; frozen codebook remains unchanged for primary replication"
    }
  },
  "budget": {
    "primary_matching_variable": "total input + output tokens",
    "also_report": ["input_tokens", "output_tokens", "wall_clock_latency", "serial_depth", "parallelizable_calls", "estimated_monetary_cost"],
    "same_frozen_pool_for_aggregation": true
  },
  "semantic_clustering": {
    "primary": "frozen bidirectional-entailment semantic identity validated blindly",
    "sensitivity": ["embedding clustering", "tau_support 0.01", "tau_support 0.03", "tau_support 0.05"],
    "post_freeze_new_clusters": "UNMAPPED for primary analysis; exploratory extension only"
  },
  "annotation": {
    "condition_masked": true,
    "model_masked_where_feasible": true,
    "T_vocabulary_forbidden_in_codebook": true,
    "primary_author_as_reference_annotator": false,
    "minimum_independent_annotators": 2,
    "agreement": "Krippendorff alpha reported by field",
    "adjudication": "third blinded adjudicator for disagreements affecting primary endpoint",
    "confirmation_codebook_mutation_forbidden": true
  },
  "experiments": [
    {
      "id": "E1_STAGE",
      "priority": 1,
      "question": "At which post-training transition does observable semantic contraction appear, and what part remains generically recoverable?",
      "preferred_open_trajectory": ["BASE", "SFT", "DPO", "RLVR"],
      "template_ablation": true,
      "primary_endpoint": "adjacent-stage change in ES_LOSS and REC_GAIN",
      "guardrails": ["Q_task", "Q_fact", "cost"],
      "minimum_families": 2,
      "preferred_family": "Tulu/Open-Instruct trajectory where public checkpoint provenance permits stage attribution"
    },
    {
      "id": "E2_RECOVERY",
      "priority": 2,
      "question": "When relevant semantic support disappears in a narrower condition, can generic preregistered probes recover it without naming missing content?",
      "primary_endpoint": "REC_GAIN",
      "reference_condition": "preregistered wider condition",
      "contracted_condition": "candidate narrower condition",
      "probe_file": "/T-GPT/data/pilot-v0.8.1-prompts.json",
      "failure_condition": "REC_GAIN does not exceed hostile non-T baselines at matched budget or gains are offset by quality/cost loss"
    },
    {
      "id": "E3_TOPOLOGY",
      "priority": 3,
      "question": "At matched budget and frozen initial branches, which communication/aggregation topology best preserves relevant semantic coverage and provenance?",
      "generation_pool": "identical frozen initial pool across aggregators",
      "conditions": ["INDEPENDENT_NO_CONTACT", "IMMEDIATE_DENSE_CONTACT", "TEMPORARY_ISOLATION_DELAYED_CONTACT", "STANDARD_SUMMARY", "MAJORITY_OR_JUDGE", "EXHAUSTIVE_NON_T", "GREEDY_COVERAGE_BASELINE", "T_WEAVE"],
      "primary_endpoint": "AGG_COVERAGE",
      "secondary": ["MINORITY_RECALL", "cost"],
      "hostile_baseline_script": "/T-GPT/tools/coverage_baseline.py"
    },
    {
      "id": "E4_R_META",
      "priority": 4,
      "question": "Does relational topology recur after structural critique more than after equally strong style/length controls?",
      "arms": ["STRUCTURAL_CRITIQUE", "STYLE_CONTROL", "LENGTH_CONTROL", "NO_CRITIQUE"],
      "critique_generator": "fixed third-party template/model independent of T^ vocabulary",
      "primary_endpoint": "blinded structural recurrence rate difference STRUCTURAL_CRITIQUE vs pooled controls",
      "counter_hypothesis": "CH11_MIRROR_ELICITATION"
    }
  ],
  "hostile_baselines": ["DIRECT", "EXPLICIT_K_DISTINCT", "MINIMAL_MULTI", "DISPERSIVE_SAMPLING", "VERBALIZED_SAMPLING", "MULTI_CLUSTER_GREEDY_COVERAGE", "EXHAUSTIVE_NON_T", "BEST_OF_N_OR_JUDGE", "STANDARD_MULTI_AGENT_DEBATE"],
  "analysis": {
    "within_task": "10000-resample non-parametric bootstrap over independent generations",
    "across_tasks": "task-level bootstrap or preregistered hierarchical model; task is upper-level unit",
    "confidence": 0.95,
    "primary_endpoint_per_experiment": 1,
    "secondary_multiple_comparisons": "Holm within experiment family",
    "effect_sizes_required": true,
    "null_results_published": true,
    "negative_results_published": true
  },
  "auto_null": {
    "T_layer_removed_if": [
      "hostile non-T baseline equals or exceeds T condition within uncertainty at lower or equal cost",
      "T vocabulary or fixed branch count becomes a detectable stylistic signature without coverage gain",
      "plurality increases while Q_task/Q_fact loss offsets the preregistered benefit",
      "benefit disappears under blinded replication"
    ]
  },
  "reproducible_tools": {
    "recovery_metrics": "/T-GPT/tools/compute_recovery_metrics.py",
    "coverage_baseline": "/T-GPT/tools/coverage_baseline.py",
    "selftest": "/T-GPT/tools/selftest-v0.8.1.py",
    "tool_readme": "/T-GPT/tools/README-v0.8.1.md",
    "recovery_example": "/T-GPT/data/example-recovery-v0.8.1.json",
    "coverage_example": "/T-GPT/data/example-coverage-v0.8.1.json",
    "legacy_runner": "/T-GPT/tools/run_openai_experiments.py"
  }
}