## Changes - `parse_dllm_logprobs(outputs, step: int = -1) -> list[dict[int, list[float]]]` in `artefactual/preprocessing/dllm_parser.py` - Extracts top-K logprobs from a single denoising step's mask logit distribution - Output matches the `parse_top_logprobs` contract so existing `EntropyFeatureExtractor` works unchanged - Wire into `parse_top_logprobs` auto-dispatch via a probe on the output type ## Acceptance criteria - Function importable from `artefactual.preprocessing` - Auto-dispatch in `parse_top_logprobs` routes dLLM outputs correctly - Unit tests with synthetic stubs: empty, fully confident, fully uncertain
Changes
parse_dllm_logprobs(outputs, step: int = -1) -> list[dict[int, list[float]]]inartefactual/preprocessing/dllm_parser.pyparse_top_logprobscontract so existingEntropyFeatureExtractorworks unchangedparse_top_logprobsauto-dispatch via a probe on the output typeAcceptance criteria
artefactual.preprocessingparse_top_logprobsroutes dLLM outputs correctly