grassr 0.7.4

CRAN resubmission fixes. No computational changes; cards are identical to 0.7.2 output apart from the version stamp.

grassr 0.7.2

The open-calibration release. The calibration’s remaining bounds are compute limits rather than method limits, and the package now includes the machinery for anyone to remove them.

Contribute compute from the installed package

Three new functions:

Submissions land as pull requests on the repository’s calibration-contrib branch; see CONTRIBUTING.md (new). Every block’s seed (20300000 + block_id) is disjoint from the shipped programs’ seeds, so contributed draws can never replay shipped draws.

The vignette gains a closing section, “Extending the calibration”, that walks the contributor path from the bundled manifest to the pull request.

grassr 0.7.1

The card-redesign release. The headline reading changes from a nearest-cell surface percentile with a four-band adjective to a pooled percentile plus a consistency band on panel quality, and delta_hat becomes an implied-quality spread. Supersedes the 0.7.0 tarball.

Single vignette

The reporting-card and methods-companion vignettes are merged into one: vignette("grassr") carries the whole story, from why fixed labels mislead through two synthetic worked panels, the full API, and the calibration machinery behind the flag.

Pooled percentile + consistency band (sweep redesign)

position_on_surface() now evaluates the observed coefficient against every calibrated quality level at the matched design – a sweep – and reports three read-outs of one object:

The stipulated four-band partition (Poor / Moderate / Strong / Excellent) and the modal-band bootstrap qualifier (decisive / moderate / weak), with their 0.60 / 0.90 cuts, are retired. The bands and band_labels arguments are removed from position_on_surface() and grass_report() outright, along with the legacy delta_thresholds override on check_asymmetry() / grass_report() and the never-wired grass_spec_*() constructor family (and the internal spec-dispatch and retired classify() machinery behind it). None of this ever shipped in a CRAN release, so it is gone without deprecation shims.

Correctness and determinism

delta-hat is now an implied-quality spread (Option B)

delta_hat becomes the max-min spread of the agreement family’s implied panel qualities (PABAK, mean AC1, Fleiss kappa), in quality percentage points: each coefficient inverts to its own q_hat on the shared (q, pi_+) reference, and their spread measures cross-coefficient model discordance in interpretable units (Option B, ratified 2026-07-05). The previous definition – spread of surface percentiles across four coefficients including Krippendorff alpha – ran through the retired sawtooth machinery. Krippendorff alpha left the panel at 0.6.0 and does not re-enter; ICC is never in delta_hat. The flag convention (percentile on the matched (k, N, q_hat) null, >= 95th caution, >= 99th divergent) is unchanged in form.

Bug fixes

Documentation layer

Hygiene

grassr 0.7.0

The calibration release. Two structural changes, both from the v0.7.0 calibration program (July 2026).

delta-hat flag redesigned: percentile on the matched null

The per-(k, N) threshold table is retired. check_asymmetry() and grass_report() now report delta-hat as its percentile on the null distribution of delta-hat at the matched (k, N, q-hat) cell, with flags as conventions on that percentile (>= 95th caution, >= 99th divergent). Motivation: recalibration across panel quality showed the old single-quality (q = 0.85) thresholds were mis-sized off their calibration point, and at small N the null’s extreme quantiles are not stably invertible; the ECDF-position reading is stable, holds its false-positive rate at every quality by construction, and matches how every other quantity on the card is read.

Reference surface densified

empirical_q_hat_surface grows from 10,140 to 44,616 cells: N in {15, 20, 30, 50, 75, 100, 150, 200, 300, 500, 1000} (was {50, 200, 1000}) and a unified 13-point q-grid at every k. Lookups that previously clamped (e.g. N = 22 -> 50) now resolve to near cells. sysdata is 6.91 MB (storage-precision reduction to follow before any CRAN submission of this line).

grassr 0.6.2

CRAN resubmission release. No changes to package functionality.

CRAN check surface reduced

The 0.6.1 incoming pretest failed on CRAN’s Windows R-devel machine with silent process deaths in the test and vignette-rebuild steps (no diagnostics in either log; the same tarball checks clean on the same R revision – 2026-07-03 r90206 ucrt – on independent Windows infrastructure, and on the Debian pretest). 0.6.2 minimizes what CRAN machines execute, which is recommended practice regardless:

grassr 0.6.1

CRAN resubmission release. No functional changes.

Package renamed: grass -> grassr

CRAN declined to release the archived name ‘GRASS’ (package names are persistent, case-insensitively). The package is now ‘grassr’. All function names, arguments, and behavior are unchanged – the API keeps the grass_* prefix, matching the GRASS framework the package implements.

Bundled reference surfaces rounded to 5 decimals

The reference surfaces in R/sysdata.rda are now stored at 5-decimal precision (previously full 64-bit doubles), shrinking the file from 9.55 MB to 2.83 MB and the tarball to under 5 MB. The discarded digits are Monte Carlo noise: the surfaces’ simulation error is on the order of 1e-2, three orders of magnitude above the rounding. No lookup, threshold, test, or reported number changes at reported precision. The full-precision surfaces and the rounding script are archived in data-raw/.

grassr 0.6.0

First CRAN release. Two behavioral changes and a legacy-API removal, plus CRAN compliance fixes.

Behavioral change — Krippendorff’s alpha removed from the Report Card panel and delta-hat

In the binary fully-crossed designs this package targets, Krippendorff’s alpha coincides with Fleiss’ kappa asymptotically (median absolute difference 0.00024 across the 10,140-cell calibration grid; the asymptotic argument is in the accompanying paper’s Appendix A.2). The alpha row added no information to the Report Card and its small-sample deviation from Fleiss’ kappa could tip borderline delta-hat readings across a calibrated threshold on noise alone. As of 0.6.0:

Legacy API removed

The pre-0.2.0 grass_result object and its consumers were deprecated at 0.2.0 and have been unreachable from the public API since then (no exported constructor produced a grass_result). Removed: grass_format_report(), grass_methods(), grass_report_by(), print.grass_result(), summary.grass_result(), tidy.grass_result(), as.data.frame.grass_result(). The modern equivalents are print(grass_report(Y)), summary(), as.data.frame(), and the Methods-paragraph templates in the reporting-card vignette.

CRAN compliance

grassr 0.5.2

Bug-fix and sysdata-correction release. The v0.5.0 / v0.5.1 bundled empirical_q_hat_surface had a build-time mislabeling bug at k = 2 that paired empirical q-hat distributions with the wrong scenarios for roughly half of all k = 2 sysdata cells; a corrected k = 2 sub-grid plus a high-q augmentation are bundled here. Internal logic is unchanged; the 0 FAIL test posture is preserved and 12 new regression-anchor tests pin known design points.

Behavioral change (BUG FIX) — k = 2 surface percentile lookup corrected

Robustness checks — high-q surface coverage

Three targeted sub-sims added at v0.5.2 verify the surface lookup behaves as designed at high-quality boundary cells where per-cohort empirical distributions are tightest and grid coverage matters most. These are robustness checks of the framework’s reach into the high-q corners of the design space, not bug fixes.

Net q-grids after all v0.5.2 augmentations: - k = 2: 12 points {0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.94, 0.95, 0.97, 0.99} — canonical 10-point grid plus 0.94 and 0.97. - k = 25: 13 points {0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.92, 0.94, 0.95, 0.97, 0.99} — canonical 10-point grid plus 0.92, 0.94, and 0.97. - k in {3, 5, 8, 15}: 10 points (canonical) — unchanged.

The augmentation sims use a per-scenario rds layout (kill-safe, resume-safe) and skip glmer (the bundled surface uses only logit_mixed_icc_oracle, not the glmer-fitted ICC; glmer was the slow path that initially stalled the k = 25 run before being disabled).

Why three sub-sims rather than one denser grid up front? Each boundary gap surfaced through diagnostic work on a specific paper anchor (post-hoc figure A at k = 2; tab:card_summary row 6 at k = 25). We added grid points where the diagnostics surfaced gaps, keeping the augmentation tight to the actual coverage need rather than running an order-of-magnitude denser global grid. The structural fix — bilinear interpolation across two adjacent q_true cohorts in lookup_empirical_q_hat() — is designed in grass/design/v0.5.3_lookup_interpolation.md and queued for the next minor release; it would resolve the boundary-snap pathology without requiring ever-denser grids, but the augmentations bring the v0.5.2 surface to a defensible coverage level for the paper’s specific anchor cells.

Defensive guards in sysdata builders

New regression tests

Sysdata size and shape

Report Card render fixes (R/format.R)

Two render-layer changes surfaced by the 2026-05-11 paper-vs-code audit. Neither changes computation; both affect what print(grass_report(Y)) shows on screen.

What did NOT change

grassr 0.5.1

Cosmetic and documentation release. No internal-logic, sysdata, or test changes; the 0 FAIL across 194 test files posture from v0.5.0 is unchanged.

Behavioral change

Vignette

Documentation

grassr 0.5.0

Three substantive landings drive this release. (1) Cross-coefficient divergence delta_hat is now computed over the agreement family only (PABAK, mean AC1, Fleiss kappa, Krippendorff alpha). Each has a closed-form reference depending on (q, pi_+) only, so the cross-family spread is DGP-robust at the panel level. ICC remains on the Report Card panel rows but does NOT enter delta_hat: ICC’s reference surface depends on the full F-shape variance structure rather than (q, pi_+), and a panel whose true F does not match the bundled logit-normal reference can drift by ~20 pp at small designs. An earlier delta_hat scope including ICC produced ~80% FPR at the diagonal null under matched DGPs and was abandoned in favor of the agreement-family-only construction adopted here (see § “Behavioral change” below; paper §3 ICC scope and Appendix E for the full quantitative case). (2) The bundled fitted_icc_reference_curves sysdata object is rebuilt from a unified Julia MixedModels.jl simulation extending coverage to k in {3, 5, 8, 15, 25} x N in {30, 50, 75, 100, 200, 300, 500, 1000} on a 14-point q-grid spanning [0.35, 0.99]. Across 1,000 random common-applied-design panels the ICC clamp rate is 7.7% (residual clamping concentrated at small N: 14.3% at N=30; or small k: 16.3% at k=3). (3) The delta_thresholds_lookup table is freshly derived under the agreement-family delta_hat definition (4-coefficient max-min) for size-alpha calibration.

Behavioral change

New

Coverage extension

grassr 0.1.2

Round 5 — spec-dispatch architecture + reviewer 5/5 items.

Architecture

New features

Breaking / estimand changes


grassr 0.1.1

Reviewer-driven polish (round 4).

New in 0.1.1 (round 4)

Breaking

New

Fixes

Still v0.1.0 entry-points

grass_compute(), grass_report(), grass_reference(), grass_reference_table(), grass_prevalence(), grass_format_report(), grass_plot().

grassr 0.1.0

Initial local draft.

Public API

Design

Notes for early readers

mirror server hosted at Truenetwork, Russian Federation.