Skip to content

pvstackr 0.2.0

Choose a tag to compare

@joonho112 joonho112 released this 14 Aug 18:16
· 1 commit to main since this release

The first hardening release. It makes stored objects portable across R
versions and machines, opens the bundled brms adapter as a public three-function
interface, and tightens what a fit is allowed to retain when it is blocked.

Portability (changes hash values)

  • Content hashes and validation stamps no longer depend on the R version that
    wrote them. Both hashed the whole serialization stream, whose fourteen-byte
    header records the writing R version. Content hashes computed by earlier
    releases will not match the ones this release derives
    , so a stored
    design_hash from 0.1.x is expected to differ.
  • A saved fit no longer refuses its own accessors after an R upgrade.
  • pv_revalidate_brr_target() no longer requires a legacy target's weighted
    least-squares estimates to match bit-for-bit. Those last bits differ between
    BLAS implementations, so a target built on one machine could not be
    revalidated on another. Structure, declared inputs, and the input-derived
    design hash are still compared exactly; the estimates go through the
    package's numeric policy (absolute 1e-12, relative 1e-10). A difference
    large enough to matter still fails closed.

Backend

  • The bundled brms adapter is public: pv_backend_brms_fit_function(),
    pv_backend_brms_draws_function(), and pv_backend_brms_sampler_diagnostics().
    Injecting all three runs the same code the bundled backend runs; any one can
    be replaced to attach a different engine. The routes differ in recorded
    provenance, and a reportable injected fit needs all three.
  • pv_fit(method = "stack_direct") with pv_control(backend = "brms") now runs
    without an injected adapter pair.
  • A population-level prior (class = "b" with no coef) is expanded onto the
    individual slope coefficients instead of being refused.

Fail-closed behaviour

  • Final fits carry an exact validation record with a deep tier and a cheap
    rehash tier.
  • Blocked fits use a generic retention firewall: heavy payloads are absent, and
    only canonical evidence is retained.
  • stack_psis separates weight input route, Pareto-k source, and smoothing
    provenance; supplied weights enter the reportable route only when the caller
    declares an external producer and version.
  • pv_migrate_legacy_psis_fit() gives historical PSIS results an
    inspection-only migration path.

See NEWS.md for the
full list, and the package website for
documentation.