Changes in version 0.2.0 (2026-10-31) - S3 classes with methods: post_sim() returns an "acpbvar_post", sign_restrict() an "acpbvar_signs", collect_irfs() an "acpbvar_irf", each with a print() method; summary() on impulse responses gives the quantiles by horizon for selected variables and shocks; plot() on impulse responses selects panels. The objects remain the documented lists and arrays, so existing code is unaffected; subsetting an "acpbvar_irf" with [ returns a plain array. - collect_irfs() carries variable names (from post_sim()) and shock names (from the rows of S) as dimnames. - plot_irfs() gains vars and shocks to select panels, ref to overlay a second set of responses (dashed median, dotted band), xlab and mfrow; with a single shock the panel titles are the variable names. - simulate_var_example(): the impact matrix is recentred so that the true responses are typical elements of the sign-identified set (same signs and persistence as before). - Uhlig vignette: the third series is the commodity price index of Uhlig (2005), not the CPI (the monetary help page of bsvarSIGNs mislabels it); the sample ends in November 2007. Changes in version 0.1.0 - New vignette on real data: the monetary policy shock of Uhlig (2005) on the monetary data shipped by bsvarSIGNs (in Suggests), with a comparison of impulse responses and timings against bsvarSIGNs. - sign_restrict() gains method = c("per_draw", "joint"): the joint accept-reject of Chan's replication code (one rotation per posterior draw) is available next to the default per-draw search. - build_s2() computes the AR(4) residual variances by OLS (mean of squared residuals), as in Chan's get_resid_var.m, instead of stats::arima(). - compute_irf() uses the VMA recursion instead of companion-matrix powers (identical output, much faster for large n * p). - sign_restrict() gains horizons: sign restrictions can be imposed on the impulse responses at horizons 0, ..., horizons, with the same matrix at every horizon or a 3-d array with one sign matrix per horizon. Initial release (package formerly named samplerChan). - Bayesian structural VAR in the A-form of Chan (2022), with the asymmetric conjugate (Minnesota-type) prior; own-lag and cross-lag tightness chosen by Empirical Bayes on the closed-form marginal likelihood. - Exact equation-by-equation posterior simulation (independent Normal-Inverse-Gamma draws), analytical recovery of the reduced form. - Sign-restriction identification on the impact matrix following Rubio-Ramirez, Waggoner and Zha (2010); impulse responses with posterior bands. Fixes relative to the development version of May 2026: - check_sign() now checks every variable under partial identification (it previously looped over the number of shocks), and sign_restrict() defaults n_id to nrow(S). - sign_restrict() records the posterior draws for which no rotation was found within max_tries (attribute failed_draws) and warns when any. - optim_hyper() no longer imposes a discontinuous kappa < 1 penalty; post_sim() stores the optimiser convergence code in spec$convergence and warns on non-convergence. - Added testthat regression tests and a DGP recovery test. - All exported functions validate their arguments and stop with an informative message (R/validate.R). - Posterior quantities (Cholesky factor of the precision, posterior mean, inverse-gamma parameters) are computed once per equation; each draw is then one rgamma() and one triangular solve. Same draws for the same seed, roughly 200x faster for 50 variables and 4 lags.