Skip to content

Characterize time-dependent evaluation semantics - #366

Merged
uriahf merged 8 commits into
mainfrom
semantics/stage-1b-time-characterization
Aug 21, 2026
Merged

Characterize time-dependent evaluation semantics#366
uriahf merged 8 commits into
mainfrom
semantics/stage-1b-time-characterization

Conversation

@uriahf

@uriahf uriahf commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Goal

Implement Stage 1B of the cross-language semantic audit as Python characterization tests only.

Coverage

Adds focused tests for time-dependent semantics across multiple horizons:

  • one model × one population
  • multiple models × the same population
  • population-labelled evaluations with different event prevalence
  • population-labelled evaluations with equal prevalence
  • explicitly paired model-population inputs
  • ROC, precision-recall, gains, lift, decision, and interventions-avoided grouping and reference ownership
  • calibration identity-line and series behavior
  • plotted-series labels, colors, legend participation, and cutoff-marker behavior
  • performance-data and performance-table grouping by reference_group × fixed_time_horizon

Characterized current behavior

The time-dependent input/output contract does not carry separate model and population dimensions. Multiple keyed evaluations and explicit model-population pairs remain generic reference_groups.

Reference-line scope is currently inferred from whether horizon-specific event risks differ across reference_groups. As a result:

  • multiple models sharing one outcome population get shared references at each horizon;
  • distinct populations with different horizon-specific risks get population-owned references;
  • distinct populations with equal horizon-specific risk remain separate plotted series but their prevalence-dependent references collapse to shared references;
  • reference scope can switch from shared at one horizon to population-specific at another if the population risks are equal at the first horizon and diverge later.

This PR records those semantics rather than changing them.

Scope

Test-only. No statistical calculations, public APIs, production behavior, plotting code, package metadata, documentation, or rtichoke_viz are changed.

Verification

The final diff contains one added test file only. Python package CI passes on 3.12, 3.13, and 3.14, including Ruff lint/format, type checking, package build, and the full 169-test suite.

@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 11:07 UTC

@uriahf
uriahf marked this pull request as ready for review August 21, 2026 11:05
@uriahf
uriahf merged commit 527234d 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