Skip to content

Preserve model vs population semantics in performance tables - #371

Merged
uriahf merged 4 commits into
mainfrom
semantics/performance-table-group-role
Aug 21, 2026
Merged

Preserve model vs population semantics in performance tables#371
uriahf merged 4 commits into
mainfrom
semantics/performance-table-group-role

Conversation

@uriahf

@uriahf uriahf commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Goal

Align Python performance-table presentation with the merged evaluation semantic contract without changing prepared-performance-data schemas or public APIs.

Problem

Both Python table renderers currently rename the generic compatibility field reference_group to Model. For keyed population/evaluation inputs, those groups are populations, so the rendered table can label Population A under a Model heading. R preserves the known semantic role and renders Model or Population accordingly.

Change

High-level create_performance_table() and create_performance_table_times() now derive the known evaluation role from the existing internal evaluation metadata and attach it only as transient render-path metadata.

  • shared outcomes -> groups are models in one shared population -> render Model;
  • keyed outcomes/times -> groups are distinct populations/evaluations with unknown model identity -> render Population;
  • bare render_performance_table(prepared_data) retains the existing default behavior because the original input identity is no longer available there.

Both Great Tables and Reactable use the transient role only for rendering/group-label semantics and coloring.

Compatibility

  • no changes to prepare_performance_data() or prepare_performance_data_times() return schemas;
  • no new public arguments;
  • no statistical changes;
  • no changes to row identity, ordering semantics, or calculations;
  • no R or rtichoke_viz changes.

Tests

Adds regression coverage that shared-outcome create paths propagate model role, keyed population paths propagate population role, and prepare_performance_data_times() itself remains free of the transient render metadata.

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-21 14:48 UTC

@uriahf
uriahf marked this pull request as ready for review August 21, 2026 14:47
@uriahf
uriahf merged commit d19128b into main Aug 21, 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