{
  "alpha": 0.5,
  "b_vs_a": "Strong-B selected gain must exceed Currier-A selected gain; B significant while A remains flat reproduces known contrast.",
  "candidate_models": {
    "intercept": [],
    "suffix": [
      "suffix"
    ],
    "suffix_hand": [
      "suffix",
      "hand"
    ],
    "suffix_hand_section": [
      "suffix",
      "hand",
      "section"
    ],
    "suffix_section": [
      "suffix",
      "section"
    ]
  },
  "classes": [
    "A",
    "B",
    "D",
    "X"
  ],
  "complexity": "Five-fold heldout log2 likelihood minus 0.5*k*log2(N_train) BIC penalty per fold.",
  "forbidden": [
    "character-to-letter substitution",
    "dictionary",
    "language prior",
    "semantic or translation score"
  ],
  "hand_recovery": "Strong-B Hand 3 minus Hand 2 accuracy-lift separation must be >=0.0245991422, matching prior empirical separation.",
  "inputs": {
    "currier_a": {
      "pages": 114,
      "prefix_inventory_sha256": "f43750281d9b6a3648dea5e206750c8e91e4bb18b85e05c99ecbebff940d45aa",
      "records": 4940,
      "sha256": "b143f28e616d3b22fe1a6aeb5a7bc876bb9b2c193c43d631fee5192da2ba3548"
    },
    "strong_b": {
      "pages": 48,
      "prefix_inventory_sha256": "b0a047e43e9b9d69f082b80e5f89b92f1b44b0d38ac4cfa7e9af8bb3cf54ef23",
      "records": 12097,
      "sha256": "c077b2313b1402d19adf3629cb2327675968fcdbbf5a9a6c1366fad5b9731dfa"
    }
  },
  "model": "Dirichlet-smoothed categorical generator for next structural class. P(c|context)=(count(c)+alpha*global_prior(c))/(context_n+alpha).",
  "null": "Within each page, permute next-class targets; preserve length, suffixes, hand and section labels; refit and reselect all five models.",
  "parameter_count": "(number of nonempty training contexts + 1 global context) \u00d7 (4\u22121)",
  "primary_margin": "Selected gain over intercept >0 bits/token and selection-aware p<0.05.",
  "replicates": 200,
  "selection": "Maximum pooled penalized bits/token; ties prefer fewer parameters.",
  "spec_sha256": "3a7ad1ad9d0e5068d28e9ec57bdf18ea3c683128ff707d4acae4b18b2417e10d",
  "version": "2.0"
}
