Release Evidence Pack

Purpose

Define the exact evidence bundle required before release sign-off for DSAMbayes v1.2.2.

Audience

  • Release owner preparing sign-off materials
  • Reviewers validating release readiness
  • Maintainers reproducing release gate outcomes

Evidence root and naming

Use one evidence root per candidate release.

Recommended path:

release_evidence/v1.2.2/<YYYYMMDD>_<short_sha>/

Example:

release_evidence/v1.2.2/20260228_0d68378/

Expected outcome: all sign-off evidence is stored in one deterministic location.

Mandatory evidence bundle

All items below are mandatory.

ID Evidence item Required content Source Required path in evidence root
EVD-01 Release identity Candidate commit hash, branch, intended tag, package version git, DESCRIPTION 00_release_identity/release_identity.txt
EVD-02 Changelog proof Top changelog section for release candidate CHANGELOG.md 00_release_identity/changelog_top.md
EVD-03 QG-1 log Lint command output and exit code local command 10_quality_gates/qg1_lint.log, 10_quality_gates/qg1_lint.exit
EVD-04 QG-2 log Style command output and exit code local command 10_quality_gates/qg2_style.log, 10_quality_gates/qg2_style.exit
EVD-05 QG-3 log Unit-test output and exit code local command 10_quality_gates/qg3_tests.log, 10_quality_gates/qg3_tests.exit
EVD-06 QG-4 log rcmdcheck output, status summary, NOTE rationale if present local command 10_quality_gates/qg4_rcmdcheck.log, 10_quality_gates/qg4_rcmdcheck.exit, 10_quality_gates/qg4_notes_rationale.md
EVD-07 QG-5 validate log Runner validate output and exit code local command 10_quality_gates/qg5_validate.log, 10_quality_gates/qg5_validate.exit
EVD-08 QG-6 run log Runner run output and exit code local command 10_quality_gates/qg6_run.log, 10_quality_gates/qg6_run.exit
EVD-09 QG-7 docs log pkgdown build output and exit code local command 10_quality_gates/qg7_pkgdown.log, 10_quality_gates/qg7_pkgdown.exit
EVD-10 Validate artefacts Required QG-5 artefacts results/quality_gate_validate 20_runner_artifacts/quality_gate_validate/
EVD-11 Run artefacts Required QG-6 artefacts results/quality_gate_run 20_runner_artifacts/quality_gate_run/
EVD-12 CI proof CI run URLs and final status for R-CMD-check.yaml and pkgdown.yaml on candidate commit GitHub Actions 30_ci/ci_run_summary.md
EVD-13 Sign-off record Completed final decision record sign-off template 40_signoff/sign_off_record.md

Exact required artefact paths

EVD-10 validate artefacts (QG-5)

Copy these paths from the run directory:

  • results/quality_gate_validate/00_run_metadata/config.original.yaml
  • results/quality_gate_validate/00_run_metadata/config.resolved.yaml
  • results/quality_gate_validate/00_run_metadata/session_info.txt

EVD-11 run artefacts (QG-6)

Copy these paths from the run directory:

  • results/quality_gate_run/00_run_metadata/config.resolved.yaml
  • results/quality_gate_run/20_model_fit/model.rds
  • results/quality_gate_run/30_post_run/posterior_summary.csv
  • results/quality_gate_run/40_diagnostics/diagnostics_report.csv

Collection commands

Create evidence structure:

mkdir -p release_evidence/v1.2.2/$(date +%Y%m%d)_$(git rev-parse --short HEAD)/{00_release_identity,10_quality_gates,20_runner_artifacts,30_ci,40_signoff}

Expected outcome: canonical evidence folders exist.

Capture release identity and changelog proof:

EROOT="release_evidence/v1.2.2/$(date +%Y%m%d)_$(git rev-parse --short HEAD)"
{
  echo "candidate_commit=$(git rev-parse HEAD)"
  echo "candidate_branch=$(git rev-parse --abbrev-ref HEAD)"
  echo "target_tag=v1.2.2"
  echo "package_version=$(awk -F': ' '/^Version:/{print $2}' DESCRIPTION)"
} > "$EROOT/00_release_identity/release_identity.txt"

sed -n '1,120p' CHANGELOG.md > "$EROOT/00_release_identity/changelog_top.md"

Expected outcome: release_identity.txt and changelog_top.md are populated.

Capture gate logs and exit codes:

EROOT="release_evidence/v1.2.2/$(date +%Y%m%d)_$(git rev-parse --short HEAD)"

R_LIBS_USER="$PWD/.Rlib" Rscript scripts/check.R --lint > "$EROOT/10_quality_gates/qg1_lint.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg1_lint.exit"
R_LIBS_USER="$PWD/.Rlib" Rscript scripts/check.R --style > "$EROOT/10_quality_gates/qg2_style.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg2_style.exit"
R_LIBS_USER="$PWD/.Rlib" R -q -e 'testthat::test_dir("tests/testthat")' > "$EROOT/10_quality_gates/qg3_tests.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg3_tests.exit"
R_LIBS_USER="$PWD/.Rlib" R -q -e 'rcmdcheck::rcmdcheck(args = c("--no-manual","--compact-vignettes=gs+qpdf"))' > "$EROOT/10_quality_gates/qg4_rcmdcheck.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg4_rcmdcheck.exit"
R_LIBS_USER="$PWD/.Rlib" Rscript scripts/dsambayes.R validate --config config/blm_synthetic_mcmc.yaml --run-dir results/quality_gate_validate > "$EROOT/10_quality_gates/qg5_validate.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg5_validate.exit"
R_LIBS_USER="$PWD/.Rlib" Rscript scripts/dsambayes.R run --config config/blm_synthetic_mcmc.yaml --run-dir results/quality_gate_run > "$EROOT/10_quality_gates/qg6_run.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg6_run.exit"
R_LIBS_USER="$PWD/.Rlib" Rscript -e 'pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)' > "$EROOT/10_quality_gates/qg7_pkgdown.log" 2>&1; echo $? > "$EROOT/10_quality_gates/qg7_pkgdown.exit"

Expected outcome: seven gate logs and seven exit-code files are present.

Copy runner artefacts:

EROOT="release_evidence/v1.2.2/$(date +%Y%m%d)_$(git rev-parse --short HEAD)"
mkdir -p "$EROOT/20_runner_artifacts"
cp -R results/quality_gate_validate "$EROOT/20_runner_artifacts/"
cp -R results/quality_gate_run "$EROOT/20_runner_artifacts/"

Expected outcome: runner artefacts are captured under evidence storage.

Evidence review checklist

Before sign-off, reviewers must confirm all items below:

  1. release_identity.txt commit hash matches the commit being tagged.
  2. package_version in release_identity.txt matches the intended release (1.2.0).
  3. changelog_top.md includes a DSAMbayes 1.2.0 section aligned with candidate changes.
  4. Every qg*.exit file contains 0.
  5. Required QG-5 and QG-6 artefact paths exist.
  6. ci_run_summary.md records CI run links and final statuses for both workflows.
  7. Completed sign-off record exists at 40_signoff/sign_off_record.md.

CI summary file contract (EVD-12)

30_ci/ci_run_summary.md must contain:

  • Candidate commit hash
  • URL and status for .github/workflows/R-CMD-check.yaml
  • URL and status for .github/workflows/pkgdown.yaml
  • Reviewer name and review timestamp in UTC

Submission and retention

  1. Submit the evidence root path in the release PR and in the sign-off record.
  2. Do not delete evidence for approved releases.
  3. For rejected releases, retain evidence and mark decision as NO-GO in sign-off.