Writes the four qualification artefacts — installation qualification, operational qualification, risk assessment and environment manifest — into one directory, plus an index.html that links them and states the headline numbers. This is the deliverable a QA reviewer or an auditor is handed.

evidence_bundle(iq, oq, risk, path = "valpack_evidence")

Arguments

iq

A iq_record() object.

oq

A oq_record() object.

risk

An assess_risk() tibble.

path

Directory to write into; created if it does not exist.

Value

A named character vector of the written file paths, invisibly.

Details

Output is plain HTML and JSON: no rendering toolchain, no extra dependencies, opens from a file share on a locked-down validated desktop.

The OQ page carries a failure taxonomy: every failing unit grouped by the cause its message evidences — missing suggested package, absent external resource, network, subprocess did not complete, or error in example. A bare failure count is not a reviewable artefact; "13 of 140 failures are an absent Suggests package and 46 are a subprocess that never finished" is. Classification is by message wording and is deliberately conservative: anything ambiguous is left in error in example, the bucket that reflects worst on the library.

The index also states what the OQ did not cover: which types were requested, the per-package timeout the run used, the skip share, how many units the harness could not judge at all (status harness), how many packages had no executed unit at all, how many packages were installed with --install-tests, and that riskmetricvalpack's own hard dependency — is qualified by valpack's test suite rather than by an examples-only OQ.

Examples

quick <- riskmetric::all_assessments()[c("assess_has_news", "assess_has_examples")]
iq <- iq_record(c("whisker", "jsonlite"))
oq <- oq_record("whisker", max_topics = 2)
#>  Running examples for whisker
risk <- assess_risk(c("whisker", "jsonlite"), assessments = quick)

out <- evidence_bundle(iq, oq, risk, path = file.path(tempdir(), "evidence"))
#>  Evidence bundle written to /tmp/RtmpZtJJJ6/evidence
basename(out)
#> [1] "iq.html"       "oq.html"       "risk.html"     "manifest.json"
#> [5] "index.html"   
file.exists(out)
#> [1] TRUE TRUE TRUE TRUE TRUE