Renderer and Area Release Evidence
renderer-area-release-evidence.RmdThis maintainer article records the v1.2 evidence chain for the renderer decision and template area enhancements. It is intentionally separate from the user-facing template and embedding articles.
Renderer decision
v1.2 keeps vizRd on ggplot2 + ggiraph. The accepted Phase 25 decision
is recorded in
.planning/phases/25-renderer-decision-spike/25-RENDERER-ADR.md.
That decision avoids adding a production renderer dependency, rewriting
chart modules, or changing static export behavior.
The accepted baseline is the existing package stack: ggplot2 builders for static/exportable plots and ggiraph widgets for live hover, click selection, sticky detail, Shiny-owned controls, share/embed state, and package-local iframe resize behavior.
Renderer evidence map
| Evidence source | Maintainer use |
|---|---|
.planning/phases/25-renderer-decision-spike/25-RENDERER-ADR.md |
Accepted no-migration decision, risks, rollback path, and follow-on triggers. |
.planning/phases/25-renderer-decision-spike/25-RENDERER-MATRIX.md |
Candidate comparison across hover, click, sticky detail, embed/share, iframe resize, export, accessibility, source-package hygiene, and CRAN/no-CDN constraints. |
.planning/phases/25-renderer-decision-spike/25-NO-REGRESSION-MATRIX.md |
No-regression expectations for the ggplot2 + ggiraph baseline and inspection-only plotly notes. |
.planning/phases/25-renderer-decision-spike/25-VERIFICATION.md |
Verification that Phase 25 compared candidates, preserved production code, and recorded the no-migration decision. |
gg2d3 remains rejected for prototype time until a
canonical package source is verified. Plotly remains a future inspection
candidate only; Phase 25 did not add plotly to DESCRIPTION,
renv.lock, or production runtime code.
Area mode and Top-N guardrails
Phase 26 added the canonical area adapter contract for
area_mode, raw values, shares, invalid percent fallback,
warnings, and deterministic Top-N plus Other aggregation. The primary
source artifacts are
.planning/phases/26-area-mode-and-aggregation-contracts/26-CONTEXT.md
and
.planning/phases/26-area-mode-and-aggregation-contracts/26-03-SUMMARY.md.
Percent mode is valid only for complete, finite, non-negative
displayed values with a positive total in every time period. Invalid
percent states keep the area view available in absolute mode and carry
this user-facing fallback copy:
100% mode needs non-negative complete values with a positive total in every time period. Showing absolute values.
Top-N plus Other aggregation is applied after explicit
geos filtering and before percent calculation. The
generated Other series is a real aggregate with per-period
sums, warning metadata, report lines, and snapshot metadata.
Isolation, export, and share parity
Phase 27 added direct area-series isolation as post-contract state.
The primary source artifacts are
.planning/phases/27-area-runtime-interaction-enhancements/27-CONTEXT.md,
.planning/phases/27-area-runtime-interaction-enhancements/27-01-SUMMARY.md,
.planning/phases/27-area-runtime-interaction-enhancements/27-02-SUMMARY.md,
and
.planning/phases/27-area-runtime-interaction-enhancements/27-VERIFICATION.md.
area_series is distinct from geos:
geos selects candidate source geographies before
aggregation, while area_series isolates displayed named
series and generated Other after the area contract is
prepared. All displayed series are selected by default, stale shared
labels are pruned, and an intentional empty selection remains durable
export metadata.
Exports, reports, snapshots, and share/embed URLs consume the same area state. Static plots adapt through the canonical area contract once, then subset the displayed series. Percent mode is not renormalized after isolation, so visible series may total below 100%.
Layered evidence
v1.2 documentation and release evidence should be read as a layered chain:
| Layer | Evidence |
|---|---|
| Renderer decision | Phase 25 ADR, matrix, no-regression matrix, verification, and
tests/testthat/test-renderer-decision-artifact.R. |
| Area contract | Phase 26 context and summaries plus
tests/testthat/test-runtime-adapters.R,
tests/testthat/test-mod-area-chart.R, and
tests/testthat/test-export-handlers.R. |
| Area isolation | Phase 27 summaries and verification plus
tests/testthat/test-mod-embed-shell-server.R,
tests/testthat/test-embed.R, and export handler tests. |
| Documentation guards |
tests/testthat/test-docs-release.R and
tests/testthat/test-docs-embedding.R. |
| Human/release closure | Phase 28 UAT and release-evidence artifacts produced after this article. |
The browser E2E harness remains local and opt-in through
NOT_CRAN=true and VIZRD_E2E=true. Missing
browser prerequisites are explicit skips, not hidden passes.
Maintainer release ladder
Run focused source guards before broad checks:
rtk Rscript --vanilla -e 'devtools::load_all(quiet = TRUE); testthat::test_file("tests/testthat/test-docs-release.R"); testthat::test_file("tests/testthat/test-docs-embedding.R"); testthat::test_file("tests/testthat/test-renderer-decision-artifact.R")'
rtk Rscript --vanilla -e 'devtools::load_all(quiet = TRUE); testthat::test_file("tests/testthat/test-runtime-adapters.R"); testthat::test_file("tests/testthat/test-mod-area-chart.R"); testthat::test_file("tests/testthat/test-mod-embed-shell-server.R"); testthat::test_file("tests/testthat/test-embed.R"); testthat::test_file("tests/testthat/test-export-handlers.R")'
rtk Rscript --vanilla -e 'devtools::test()'Plan 28-03 records the current temporary pkgdown build, source tarball inspection, and local as-CRAN check results. This article does not claim actual CRAN submission or acceptance.
Deferred boundaries
Deferred work remains out of the v1.2 implementation:
- Production renderer migration or complement work requires a separately planned phase with runnable parity evidence and rollback criteria.
- Mixed-sign or mixed-metric stacked-area analysis remains outside the current area contract.
- Broader BI/report-builder capabilities such as joins, calculated fields, saved dashboards, authentication, hosted publishing, or multi-user workflows remain outside vizRd’s current package promise.