Skip to content

Complete static browser summary report parity - #399

Merged
uriahf merged 2 commits into
mainfrom
feat/static-browser-report-parity-18148318097174994982
Aug 29, 2026
Merged

Complete static browser summary report parity#399
uriahf merged 2 commits into
mainfrom
feat/static-browser-report-parity-18148318097174994982

Conversation

@uriahf

@uriahf uriahf commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Parity & Architecture Summary

This PR completes the PYTHON STATIC BROWSER SUMMARY-REPORT PARITY milestone, bringing Python's static browser summary report to analytical and structural parity with the completed R browser summary report (PR #221).

  • Starting Main SHA: ad2570107596cef73d35e4878153b076c32f7d09
  • Package Version: 0.1.36
  • rtichoke_viz v0.14.0 Provenance:
    • release: v0.14.0
    • source_commit: ec3a382656ce5b1c735175d5a8fd1ceb4f153eaf
    • archive: rtichoke-viz-0.14.0.tar.gz
    • sha256: b7c30d12db4b3f8008ef035bd4f7e04c09d599ced5bc8606a4a4141c5cdf48ee

Key Deliverables & Changes

  1. Vendored rtichoke_viz v0.14.0:

    • Updated vendored bundle, styles, and JSON schemas in src/rtichoke/_vendor/rtichoke_viz/.
    • Updated provenance details in VENDORED_FROM.
  2. Dependency Update:

    • Moved scikit-learn>=1.6.1 from [dependency-groups.dev] to [project.dependencies] in pyproject.toml.
  3. SummaryMetricsSpec v1.0, Prevalence, and AUROC:

    • Prevalence Ownership: Owned by population. Evaluated populations have local deterministic IDs (population-1, population-2) with evaluations empty. Estimate expressed as a proportion.
    • AUROC Ownership: Owned by evaluation (evaluations populated, populations empty). Computed directly from raw reals and probs using sklearn.metrics.roc_auc_score.
    • pROC Auto-Direction Compatibility: Controls are outcomes 0 and cases are outcomes 1. If median(controls) <= median(cases), roc_auc_score uses original scores; if median(controls) > median(cases), score ranking is reversed using -scores. Single-class outcomes canonicalize to null.
    • Missing-Value Decision: Preserved existing authoritative package-level input validation (_validate_and_align_binary_inputs). Explicitly fails on invalid/unmapped inputs without silent dropping.
  4. ReportSpec v1.1 & Hierarchy Parity:

    • Upgraded _report_spec.py to ReportSpec v1.1 with type-aware schema version validation (summary_metrics -> 1.0, all v2 component specs -> 2.0).
    • Assembled final 5-section report hierarchy:
      • prevalence (prevalence-summary)
      • calibration (calibration-smooth [omits yAxis.domain to show overshoot], calibration [yAxis.domain = [0, 1]])
      • discrimination (auroc, discrimination-probability-threshold [roc, precision-recall, gains, lift], discrimination-ppcr [roc-2, precision-recall-2, gains-2, lift-2])
      • utility (decision-curve, interventions-avoided)
      • performance-table (performance-table-probability-threshold [performance-table], performance-table-ppcr [performance-table-2])
    • Updated RtichokeBrowserReport.write_html() options to { sectionGroupPresentation: "tabs", groupPresentation: "stacked" }.
    • Kept default renderer="r" in public APIs.
  5. Confirmation:

    • No statistical calculation was moved into rtichoke_viz. Statistics remain strictly consumer-owned.

Tests & Verification

  • Added focused tests in tests/test_summary_metrics_spec.py, tests/test_report_spec.py, tests/test_report_browser.py, and tests/test_summary_report_browser.py.
  • Ran full test suite locally (uv run pytest), type checker (uv run ty check src tests), and ruff checks/formatting (uv run ruff check src tests).
  • Performed Playwright/headless Chrome visual inspection and confirmed report sections and tab navigation render cleanly.

PR created automatically by Jules for task 18148318097174994982 started by @uriahf

Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@github-actions

github-actions Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-29 04:28 UTC

Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com>
@uriahf
uriahf merged commit 50e20f4 into main Aug 29, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant