Appendix C — Computation and reproducibility record

C.1 The frozen analysis layer

All model fitting, output computation and claim freezing happened in the v1 repository (DPMirt-case-study/), whose stores this edition reads and never writes: the run store (78 production bundles, 78 seed-B replicates, with per-person summaries, item parameters, and, for DP arms, the full draw-level latent-density store), the tables layer (P0–P4), and the manifest (frozen coordinates and the claim register with its hashes). This repository adds an auditable derived layer, the standardized-shape placement gate, current sim-v3 evidence joins, figure programs and this book; its build asserts input provenance and re-derives the quantities used by current tables and prose.

Two freezes anchor the record. The coordinates freeze covers the 26 placements and their analysis-sample seeds (SHA-256 prefix 3a596f5b1d1121d0, taken 2026-08-04 02:29:55 UTC, before the first production fit). The claim-register freeze covers the 11 claims and their 27 input tables (prefix 59063e73f7af9694), taken before the results chapters of the first edition were written.

C.2 Sampling budgets and diagnostics

Table C.1: Sampler budgets by configuration (inherited from the simulation volume’s calibration). Retained draws are per fit, pooled over four chains.
configuration niter nburnin thin nchains retained_draws
rasch_normal 8000 4000 2 4 8000
rasch_dpm 12000 4000 2 4 16000
twopl_normal 40000 20000 10 4 8000
twopl_dpm 36000 12000 6 4 16000
Table C.2: Production-fit diagnostics and cost by configuration. The four fits above the R-hat warning line are all Rasch-DP; their reported quantities reproduce across seeds (chapter 14).
item_model prior_family fits median_minutes max_minutes core_hours median_max_rhat worst_max_rhat min_ess_theta ok estimates_ok
rasch Gaussian 13 13.2 59.5 4.9 1.00 1.00 2265 13 13
rasch Dirichlet process 26 230.0 560.8 108.6 1.01 1.28 68 26 26
twopl Gaussian 13 14.9 53.6 4.0 1.00 1.02 2863 13 13
twopl Dirichlet process 26 222.4 421.7 104.5 1.01 1.11 1000 26 26

C.3 Seeds

Every random step is deterministic from a recorded seed: the analysis samples (seeds in the frozen coordinates), the samplers (per-fit seeds in the fit records), and the estimate extractions, whose GR rank call is seeded even though exact posterior-rank ties are rare; the seed-B replicates re-derive all three from a tagged seed tree. Verification checks in the frozen layer (V-1 through V-8) pin the output metrics to the simulation’s implementations, reproduce the warehouse characterizations, and audit sample integrity; their pass record ships with the v1 repository.

C.4 Rebuilding this book

The build is driven by code/R/99-build.R: shape audit, data assembly, derivation, facts, tables, figures, semantic QA and a clean Quarto render. The heavy inputs are the 52 draw-level density stores (roughly 4 GB); their audited plotting cache is reused unless DPMIRT_REBUILD_DENSITIES=1 is set. Numbers in prose are computed at render time from the facts store; the build fails on an assertion, missing source, semantic-QA failure or render error.