{# Plotly ships with the report (report_suite.write_report_assets), not from a CDN: an air-gapped lab rendered a plot-less report with no error at all. Pinned to the version the CDN tag used to name — plotly.js v2.35.0. ONE copy per suite, at the reports root — hence ``../``; a copy per test dir cost 1.25 MB × N. Moving a single test's report dir elsewhere means bringing ``plotly.min.js`` along beside it. #}
{# === SERVER-RENDERED METRIC TREE ========================================== The tree is a read-only view of what the CLI already decided: every pill, score, criterion and detail pair below comes from the evaluated tree view. No form controls — editing a spec is the authoring tool's job, not the report's. #} {% macro status_pill(passed) %}{% if passed is sameas true %}PASS{% elif passed is sameas false %}FAIL{% else %}—{% endif %}{% endmacro %} {% macro advisory_chip(count, vidx=None) %}{% if count == 1 %}1 advisory{% else %}{{ count }} advisory{% endif %}{% endmacro %} {% macro node(n) %} {%- set combinator_help = { 'and': 'All children must pass.', 'or': 'At least one child must pass.', 'warn': 'Single-child wrapper; never fails its parent (advisory-only scoring).', 'k-of-n': 'At least k of N children must pass.', 'weighted': 'Weighted sum of child scores passes a threshold.'} -%} {%- if n.kind == 'leaf' -%}{{ w.text }}
{% endfor %} {% set changes = warnings | selectattr('is_change') | list %} {% if changes %}| Field | Reference | Current |
|---|---|---|
| {{ w.field }} | {{ w.reference }} | {{ w.current }} |
| Field | Value |
|---|---|
| {{ row.label }} | {% if row.link %}{{ row.value }}{% else %}{{ row.value }}{% endif %} |
{% for a in artifacts %}{{ a.label }}{% if not loop.last %} · {% endif %}{% endfor %}
{% for a in artifacts %}{{ a.label }}{% if not loop.last %} · {% endif %}{% endfor %}
| Parameter | Current | Reference |
|---|---|---|
| {{ row.label }} | {{ row.current }} | {{ row.reference }} |
| Name | Role | Status | Variables | Note |
|---|---|---|---|---|
| {{ ov.name }} | {{ ov.role }}{% if ov.kind %} ({{ ov.kind }}){% endif %} | {{ ov.status }} | {% if ov.variables %}{{ ov.variables | join(", ") }}{% else %}—{% endif %} | {{ ov.note }}{% for warning in ov.warnings %} {{ warning }} {% endfor %} |
Toggle per-variable visibility with the Overlays: checkboxes above each plot.
Companions are visual-only; soft_checks are warn-wrapped scorable baselines.
| Metric | Current | Reference |
|---|---|---|
| {{ row.label }} | {{ row.current }} | {{ row.reference }} |