tulpa 0.5.0

A copy amplitude was reported, and drawn, below zero

The batched joint driver returned 15 of the 17 fields it promises

A default axis had only the user’s pin to declare itself with

Documentation and packaging

tulpa 0.4.12

A GP lengthscale started five times the spread of its own data

Restricted spatial regression on a continuous field

tulpa 0.4.11

A coefficient can evolve as a continuous-time GP

A GP lengthscale started five times the spread of its own data

tulpa 0.4.10

A joint fit integrated a dispersion it could not predict with

tulpa 0.4.9

An SPDE field beside a random intercept pinned the RE SD at 1

Two constructors took arguments that no backend could fit

tulpa 0.4.8

Fractional-nu SPDE took minutes where integer nu takes seconds

The VI stopping rule was scaled by a quantity with no scale

A tier-2 test read a draw column by a name the fit stopped using

The R family registry had no test tying it to the compiled kernels

tulpa 0.4.7

tulpa_posterior_draws() sampled hyperparameters as bare grid-node atoms

tulpa 0.4.6

Four audit findings: a continuous field + RE combination auto could not carry, the field missing from every non-nested spatial fit’s linear predictor, an inline field fit’s response stored as a list, and a singular MCAR fixed-effect covariance

tulpa 0.4.4

Five audit findings: dropped offsets, EP quadrature, tweedie accessors, SPDE NUTS

tulpa 0.4.3

Polya-Gamma Gibbs routes sample their stated posterior

A free-covariance block’s prior design is declared, not inferred

The HSGP-ST interaction refuses the non-centred flag

Output accessors follow their contracts

An output-contract sweep over every tulpa() backend (34 fits) found the accessors below returning shapes, names or values their generics do not specify. Re-run on this release: 82 checks that failed now pass, none that passed now fails, and every remaining refusal names the fit class and reason.

The spatiotemporal interaction reads its AR1 time margin

Refinement slices carry the whole default hyperprior

Per-thread workspaces are built in place

tulpa 0.4.2

A refined axis’s SD reads each cell over its own row’s box

The default range prior’s dimension is the one the coordinates span

Tests

tulpa 0.4.1

tulpa() states the outer prior, under one name at every door

Fixes

Open at this release: #744 (the outer-grid measurement fixture fits a residual variance four times smaller than it simulates).

tulpa 0.4.0

The nested-Laplace doors state their outer prior

A grid-batched species fit is the fit its own call returns

The batched joint driver weights its grid the way the multi-block driver does

The slow tier re-read under the proper default hyperpriors

Free-covariance blocks and two dispersions carry a proper prior

The cheap screen ranks what the grid integrates

A refined outer grid is measured cell by cell

WAIC, LOO and posterior_predict() read the whole linear predictor

logLik() on a nested fit is the evidence of its outer grid

Every outer axis carries a proper hyperprior, and the evidence reads it

logLik() names its quantity from what the fit estimated

The nested-Laplace route carries offset()

Vignettes compare fits on the evidence logLik() reports

A field-SD axis’s decline survives a dispersion placement

Progress knobs are read by exact key

The control surface: one check per door, one home per default

One log-marginal convention, and one entry bundle

Counters that counted the wrong thing, and a rescue that erased what it rescued

Dead code that could still be revived wrong

Reporting and comments

Front-door arguments the door documented and did not honour

Spec constructors: one check, one anchor

Build

The outer k-hat’s tail is resolved once per fit, and every backend records it

mode = “auto” never picks a backend that errors on the call that selected it

A reported diagnostic says what it is, and what it could not establish

Accessors that returned the wrong shape, or the wrong quantity

Reachability: a family, a backend argument, and a shipped C callable

One covariance code names one kernel, on every path

A periodic temporal GP’s period is stated in the units the kernel sees

The two HSGP-ST prior defects the Kronecker branch’s fixes did not reach

Every per-observation input passes the finite guard

No NUTS entry can start a trajectory on an unverified gradient

A covariate transform is carried through the formula strippers unchanged

The chain checkpoint fingerprint covers the data, not only its shape

The temporal node index is checked where the areal one is

One spatial gate at the front door, whichever way the spec arrives

tulpa 0.3.2

A placement rescue no longer deletes the checkpoint its own fit wrote

tulpa 0.3.1

A per-arm dispersion axis is placed like a prior block’s scale axis

Reporting

tulpa 0.3.0

Closes every open engine issue. 0.2.14 closed seven of eleven; the remaining four are below.

The CCD curvature-reuse path is measured, and removed

One dispersion convention, in the fixtures too

One axis marginal, three measures

tulpa 0.2.14

The outer grid says what it did

Placing a design is now budgeted, and screening can no longer hide a collapse

A bounded axis has a domain, and a stated axis is a bound

Hyperpriors reach every block they name

Fixed in passing

tulpa 0.2.13

tulpa 0.2.12

tulpa 0.2.11

tulpa 0.2.10

tulpa 0.2.9

tulpa 0.2.8

tulpa 0.2.7

tulpa 0.2.6

tulpa 0.2.5

tulpa 0.2.4

tulpa 0.2.3

tulpa 0.2.2

tulpa 0.2.1

tulpa 0.2.0

tulpa 0.1.23

tulpa 0.1.22

tulpa 0.1.21

tulpa 0.1.20

tulpa 0.1.18

tulpa 0.1.17

tulpa 0.1.16

tulpa 0.1.15

tulpa 0.1.14

tulpa 0.1.13

tulpa 0.1.12

tulpa 0.1.11

tulpa 0.1.10

tulpa 0.1.9

tulpa 0.1.8

tulpa 0.1.7

tulpa 0.1.6

tulpa 0.1.5

Behaviour changes, in the order they are most likely to affect a fit.

tulpa 0.1.4

tulpa 0.1.3

tulpa 0.1.2

tulpa 0.1.1

tulpa 0.1.0

First CRAN release. The engine’s surface is unchanged from 0.0.198; this version number marks the release rather than a feature change.

tulpa 0.0.198

tulpa 0.0.197

tulpa 0.0.196

tulpa 0.0.195

tulpa 0.0.194

tulpa 0.0.193

tulpa 0.0.192

tulpa 0.0.191

tulpa 0.0.190

tulpa 0.0.189

tulpa 0.0.188

tulpa 0.0.187

tulpa 0.0.186

tulpa 0.0.185

tulpa 0.0.184

tulpa 0.0.183

tulpa 0.0.182

tulpa 0.0.181

tulpa 0.0.180

tulpa 0.0.179

tulpa 0.0.178

tulpa 0.0.177

tulpa 0.0.176

tulpa 0.0.175

tulpa 0.0.174

tulpa 0.0.173

tulpa 0.0.172

tulpa 0.0.171

tulpa 0.0.170

tulpa 0.0.169

tulpa 0.0.168

tulpa 0.0.167

tulpa 0.0.166

tulpa 0.0.165

tulpa 0.0.164

tulpa 0.0.163

tulpa 0.0.162

tulpa 0.0.161

tulpa 0.0.160

tulpa 0.0.159

tulpa 0.0.158

tulpa 0.0.157

tulpa 0.0.156

tulpa 0.0.155

tulpa 0.0.154

tulpa 0.0.153

tulpa 0.0.152

tulpa 0.0.151

tulpa 0.0.150

tulpa 0.0.149

tulpa 0.0.148

tulpa 0.0.147

tulpa 0.0.146

tulpa 0.0.145

tulpa 0.0.144

tulpa 0.0.143

tulpa 0.0.142

tulpa 0.0.141

tulpa 0.0.140

tulpa 0.0.139

tulpa 0.0.138

tulpa 0.0.137

tulpa 0.0.136

tulpa 0.0.135

tulpa 0.0.134

tulpa 0.0.133

tulpa 0.0.132

tulpa 0.0.131

tulpa 0.0.130

tulpa 0.0.129

tulpa 0.0.128

tulpa 0.0.127

tulpa 0.0.126

tulpa 0.0.125

tulpa 0.0.124

tulpa 0.0.123

tulpa 0.0.122

tulpa 0.0.121

tulpa 0.0.120

tulpa 0.0.119

tulpa 0.0.118

tulpa 0.0.117

tulpa 0.0.116

tulpa 0.0.115

tulpa 0.0.114

tulpa 0.0.113

tulpa 0.0.112

tulpa 0.0.111

tulpa 0.0.110

tulpa 0.0.109

tulpa 0.0.108

tulpa 0.0.106

tulpa 0.0.105

tulpa 0.0.104

tulpa 0.0.103

tulpa 0.0.102

tulpa 0.0.101

tulpa 0.0.100

Warm-starting the sampler from a cheaper fit of the same model.

New:

Fixed:

An exact analytic gradient of the joint-field Laplace log-marginal with respect to the random-effect covariances, and the outer optimizer and marginal correction rebuilt on top of it.

New:

Changed:

Notes:

Identification of intrinsic fields:

Fixed:

tulpa 0.0.97

The soft sum-to-zero constant that identifies intrinsic latent fields, moved onto the reference idiom and single-sourced (#241).

Fixed:

Internal:

tulpa 0.0.96

A settable prior on the zero-inflation coefficients, and the correctness fix that finding it turned up.

New:

Fixed:

tulpa 0.0.95

One diagnostic front door, selected by draws provenance.

New:

Deprecated:

Fixed:

tulpa 0.0.94

Empirical Bayes over random-effect covariances, and the lme4 / posterior accessor surface.

New:

Correctness:

tulpa 0.0.93

Zero inflation as a composition over the count families, and compiled kernels for the last three families that had none.

New:

Correctness:

tulpa 0.0.92

Audit fixes (0.0.91 review, issues #228-#239).

Correctness:

Validation & docs:

Clean-up:

tulpa 0.0.91

Audit fixes (0.0.90 review, issues #218-#227).

tulpa 0.0.90

Audit fixes (0.0.89 review, issues #207-#217).

tulpa 0.0.89

Audit fixes (0.0.88 review, issues #193-#206).

tulpa 0.0.88

tulpa 0.0.87

Bug fixes and cleanups from a second whole-repo audit (issues #176-192).

The nested-Laplace tensor-grid integrator was investigated (#179) and left unchanged: CAR_proper (tau, rho) parameter recovery confirms the marginal is already in the internal log-scale parameterization, so equal-weight grid integration is correctly calibrated and adding a user-scale Jacobian biases the scale posterior.

tulpa 0.0.86

Bug fixes from a whole-repo audit.

Warnings and cleanups.

tulpa 0.0.85

Per-block quadrature order and an optional variance-component prior on the AGHQ path.

tulpa 0.0.84

Checkpoint fix (#161).

tulpa 0.0.83

Front-door API convention cleanup (#156, fully closed) and the missing-front-door features (#158, fully closed). ABI break (TULPA_ABI_VERSION 34 -> 35) for the proper-CAR exact-NUTS eigenvalue log-determinant; downstream packages must rebuild.

tulpa 0.0.82 (2026-07-15)

The sampled spatial range gets a real prior. ABI break (TULPA_ABI_VERSION 33 -> 34); downstream packages must rebuild, and any package placing a gp() / svc() NNGP block must now supply the range anchors (see the last bullet).

tulpa 0.0.81 (2026-07-15)

Third deep-audit pass: statistical, memory-safety, and backend-consistency fixes surfaced by a fan-out code audit.

tulpa 0.0.80 (2026-07-14)

CRAN-preparation release.

tulpa 0.0.79 (2026-07-12)

tulpa 0.0.78 (2026-07-12)

tulpa 0.0.77 (2026-07-10)

tulpa 0.0.76 (2026-07-10)

tulpa 0.0.75 (2026-07-08)

tulpa 0.0.74 (2026-07-07)

tulpa 0.0.73 (2026-07-07)

tulpa 0.0.72 (2026-07-07)

tulpa 0.0.71 (2026-07-06)

tulpa 0.0.70 (2026-07-06)

tulpa 0.0.69 (2026-07-06)

tulpa 0.0.67 (2026-07-03)

tulpa 0.0.66 (2026-07-03)

tulpa 0.0.65 (2026-07-03)

tulpa 0.0.64 (2026-07-01)

tulpa 0.0.63 (2026-07-01)

tulpa 0.0.62 (2026-06-30)

tulpa 0.0.61 (2026-06-23)

tulpa 0.0.60 (2026-06-23)

tulpa 0.0.59 (2026-06-22)

tulpa 0.0.57 (2026-06-22)

tulpa 0.0.56 (2026-06-21)

tulpa 0.0.55 (2026-06-21)

tulpa 0.0.54 (2026-06-20)

tulpa 0.0.53 (2026-06-20)

tulpa 0.0.52 (2026-06-20)

tulpa 0.0.51 (2026-06-20)

tulpa 0.0.50 (2026-06-19)

tulpa 0.0.49 (2026-06-19)

tulpa 0.0.48 (2026-06-19)

tulpa 0.0.47 (2026-06-19)

tulpa 0.0.46 (2026-06-18)

tulpa 0.0.45 (2026-06-18)

tulpa 0.0.44 (2026-06-18)

tulpa 0.0.43 (2026-06-18)

tulpa 0.0.42 (2026-06-18)

tulpa 0.0.41 (2026-06-18)

tulpa 0.0.40 (2026-06-17)

tulpa 0.0.38 (2026-06-17)

tulpa 0.0.37 (2026-06-16)

tulpa 0.0.36 (2026-06-16)

tulpa 0.0.35 (2026-06-16)

tulpa 0.0.34 (2026-06-12)

tulpa 0.0.33 (2026-06-12)

tulpa 0.0.32 (2026-06-12)

tulpa 0.0.31 (2026-06-12)

tulpa 0.0.30 (2026-06-10)

tulpa 0.0.28 (2026-06-09)

tulpa 0.0.27 (2026-06-09)

tulpa 0.0.26 (2026-06-08)

tulpa 0.0.25 (2026-06-08)

tulpa 0.0.24 (2026-06-08)

tulpa 0.0.23 (2026-06-08)

tulpa 0.0.22 (2026-06-08)

tulpa 0.0.21 (2026-06-08)

tulpa 0.0.20 (2026-06-08)

tulpa 0.0.19 (2026-06-08)

tulpa 0.0.18 (2026-06-08)

tulpa 0.0.17 (2026-06-07)

tulpa 0.0.16 (2026-06-07)

tulpa 0.0.15 (2026-06-07)

tulpa 0.0.14 (2026-06-06)

tulpa 0.0.13 (2026-06-06)

tulpa 0.0.12 (2026-06-06)

tulpa 0.0.11 (2026-06-06)

tulpa 0.0.10 (2026-06-05)

tulpa 0.0.9 (2026-06-03)

tulpa 0.0.8 (2026-06-02)

tulpa 0.0.7 (2026-06-01)

tulpa 0.0.6

tulpa 0.0.5

tulpa 0.0.2

tulpa 0.0.3 (2026-05-28)

tulpa 2026-05-13 — ABI v13: Phase D — delete legacy ratio path

Closes the tulpaRatio migration tracker (gcol33/tulpa#15). After v12 gated the legacy ratio body of compute_log_post_impl<T> behind a generic-layout check, Phase D removes the body itself and every consumer of LegacyRatioData / LegacyRatioLayout.

Downstream rebuild notes: * tulpaRatio already routes through the generic LikelihoodSpec path via tulpa_bridge.cpp + per-family payloads in lik_specs/ (B1+B2 of the migration); rebuild against v13 headers, no logic changes needed. * tulpaObs never used the legacy ratio path; rebuild against v13. * tulpaGlmm Day-22+ already targets the generic path; rebuild against v13.

tulpa 2026-05-12 — ABI v12: generic-layout safety in compute_log_post_impl + ESS port

tulpa 2026-05-12 — ABI v11: caller-supplied inv-mass diagonal for NUTS

tulpa 2026-05-11 — NNGP Laplace: full off-diagonal precision scatter

tulpa 2026-05-11 — nested-Laplace ST family: 5 more indexed × indexed combos

tulpa 2026-05-11 — nested-Laplace joint spatial × temporal (ICAR × AR1)

tulpa 2026-05-11 — nested-Laplace HSGP returns modes + store_Q

tulpa 2026-05-11 — nested-Laplace BYM2 returns modes + store_Q

tulpa 2026-05-11 — nested-Laplace store_Q on RW1/RW2/AR1/CAR_proper

tulpa 2026-05-06 — Takahashi partial inverse as a registered C-callable

tulpa 2026-05-05 — multi-term + slope REs on the spec-Laplace path