""" BlockARModel – now unified with SADModel. BlockARModel is an alias for SADModel. They share the same architecture, SoftAncestorHierarchy, SADLoss, NoisyStateBuilder, and SADTrainer. Differences handled externally: - Training: SADTrainer is called with truncated sequences (curriculum) - Inference: BlockARAdaptiveSkipSampler in src/eval/sampler.py uses model.forward_causal() for block-by-block generation `build_block_diff_mask` is kept here for backward compatibility with tests. """ from .sad_model import SADModel, build_block_diff_mask # Alias so old import paths keep working BlockARModel = SADModel __all__ = ["BlockARModel", "SADModel", "build_block_diff_mask"]