Files
trueskill-tt/CHANGELOG.md
T

10 KiB

Changelog

All notable changes to this project will be documented in this file.

0.8.0 - 2026-09-08

Breaking Changes

  • feat!: make a short fit an error and raise the default iteration cap
  • feat!: validate mu, sigma and beta on HistoryBuilder
  • feat!: add History::register and History::rating, and reject config conflicts across batches
  • fix!: reject non-finite weights at ingestion
  • fix!: reject malformed games at the Game boundary too

Bug Fixes

  • fix: reject malformed events at the ingestion boundary

Documentation

  • docs: record the rayon opt-in deviation in spec section 6
  • docs: state what the joint's cost actually scales in

Features

  • feat: add EventBuilder::members for per-member configuration

Other (unconventional)

  • Merge branch 'fix/ingestion-shape'
  • Merge branch 'feat/convergence-strictness'
  • Merge branch 'fix/non-finite-weights'
  • Merge branch 'test/close-coverage-gaps'
  • Merge branch 'fix/game-boundary'

Testing

  • test: cover non-finite results and color-group disjointness

0.7.0 - 2026-09-08

Features

  • feat: factorise the joint once with History::joint

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.7.0

Other (unconventional)

  • Merge branch 'feat/joint-handle'

0.6.0 - 2026-09-08

Breaking Changes

  • fix!: make the joint span slices, not just the latest one

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.6.0

0.5.0 - 2026-09-08

Breaking Changes

  • feat!: name the unknown key, expose tail probabilities, flag short fits
  • refactor!: remove the factor-graph surface nothing used, add try_winner

Bug Fixes

  • fix(test): the ingestion-order property was comparing two truncated fits

Documentation

  • docs: record that the event log is the source of truth, and why

Features

  • feat: add UnknownKeys::Prior, and explain why there is no Skip
  • feat: add History::posterior_of for a linear combination of competitors
  • feat: add History::predict_margin for scored matchups
  • feat: add expected_variance_reduction for scored active learning

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.5.0

Styling

  • style: factor the event-pair type out of the reconvergence fixture
  • style: use arrays rather than vec! in the calibration fixture

Testing

  • test: pin that re-convergence is path-independent
  • test: calibrate the marginals against the exact posterior
  • test: pin what an additive model does to combined uncertainty

0.4.2 - 2026-09-07

Bug Fixes

  • fix: replace the erfc approximation with libm, for free
  • fix: route every transcendental through libm, and combine sigmas with hypot

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.4.2

Testing

  • test: localise the erfc_inv tail residual to the caller's argument

0.4.1 - 2026-09-07

Bug Fixes

  • fix: correct erfc_inv's sign error and keep evidence in log space

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.4.1

Testing

  • test: pin quality()'s N-group closed form, closing the README cross-check

0.4.0 - 2026-09-07

Breaking Changes

  • feat!: N-team outcome prediction with draw mass, replacing the 2-team panic
  • refactor!: close the remaining API gaps from #21
  • fix!: apply competitor configuration whenever it is supplied

Bug Fixes

  • fix(release): skip the changelog hook during a dry run
  • fix: stop destroying tail precision in evidence and truncation
  • fix: reject convergence options that silently disable inference

Documentation

  • docs: correct drifted documentation and compile the README in CI

Features

  • feat: add expected information gain for active matchup selection
  • feat: let observers be shared, boxed, or borrowed

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.4.0

0.3.0 - 2026-09-01

Breaking Changes

  • refactor!: make Competitor::message an Option, and compute_elapsed loud
  • refactor!: replace emptiness-as-sentinel with Option for results and weights
  • refactor!: remove ConvergenceReport::slices_skipped

Bug Fixes

  • fix: enforce EventBuilder weight/team length in release

Documentation

  • docs: complete the public API documentation contract

Features

  • feat: allow drift to vary per competitor via Member::with_drift_scale

Miscellaneous Tasks

  • chore: ignore proptest regression seed files
  • chore: Release trueskill-tt version 0.3.0

Performance

  • perf: stop cloning inference inputs in OwnedGame and ingestion
  • perf: make the per-slice SkillStore compact instead of dense

Testing

  • test: add property-based tests, a shared finiteness helper, and boundary inputs

0.2.0 - 2026-08-27

Breaking Changes

  • refactor!: remove the inert online flag

Bug Fixes

  • fix: reject ties without draw probability; never report NaN as converged
  • fix(quality): support any number of rating groups
  • fix(evidence): accumulate in log space and floor the per-link value
  • fix(history): stop reprocessing the slice that was just appended to
  • fix(rayon): remove the aliasing unsafe from the parallel sweep
  • fix: close out four small issues and pin #27's repro

Documentation

  • docs: refresh README and CLAUDE.md; add ingest benchmark
  • docs: spec for filtered (forward-only) estimates
  • docs: implementation plan for filtered estimates
  • docs: state filtered accessor cost and evidence semantics precisely
  • docs(cargo): correct the licence note — kellnr does not require one

Features

  • feat: add filtered_log_evidence
  • feat: add filtered learning curves

Miscellaneous Tasks

  • chore: add CI, crate metadata, and crate-level documentation
  • chore: target releases at the private kellnr registry
  • chore: keep the 48 MB ATP dataset out of the published crate
  • chore: dual-license MIT OR Apache-2.0
  • chore: Release trueskill-tt version 0.2.0

Performance

  • perf(gaussian): drop the sqrt round-trip from variance-space operations

Refactor

  • refactor: unify convergence defaults, validate builders, clear dead code

Styling

  • style: make NaN rejection explicit in score_sigma validation

Testing

  • test: pin the invariants that make filtered estimates trustworthy

0.1.2 - 2026-06-12

Bug Fixes

  • fix: release generated CHANGELOG at the wrong location
  • fix(gaussian): treat non-positive precision as improper in mu()/sigma()

Documentation

  • docs: spec for post-T4-MarginFactor tech debt cleanup
  • docs: implementation plan for post-T4-MarginFactor tech debt cleanup
  • docs: fix stale numerics in t4-margin-factor plan
  • docs: spec for game-local Damped EP
  • docs: implementation plan for game-local Damped EP
  • docs: spec for History → TimeSlice ConvergenceOptions plumbing
  • docs: implementation plan for History → TimeSlice plumbing
  • docs: spec for per-event score_sigma override
  • docs: implementation plan for per-event score_sigma override

Features

  • feat(gaussian): add damp_natural helper for EP damping
  • feat(convergence): add ConvergenceOptions::alpha damping field
  • feat(factor): add TruncFactor::propagate_with_alpha for EP damping
  • feat(factor): add MarginFactor::propagate_with_alpha for EP damping
  • feat(game): plumb ConvergenceOptions through to run_chain
  • feat(time_slice): inference callsites read self.convergence
  • feat(outcome): per-event score_sigma override on Outcome::Scored
  • feat(event_builder): expose scores_with_sigma fluent method

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.1.2

Refactor

  • refactor: dedupe Game::likelihoods and likelihoods_scored via run_chain
  • refactor: make BuiltinFactor::log_evidence match exhaustive
  • refactor(time_slice): add convergence field, rename iterate_to_convergence

Testing

  • test(game): integration tests for ConvergenceOptions behavior
  • test(history): end-to-end ConvergenceOptions propagation tests
  • test(history): end-to-end per-event score_sigma override tests

0.1.1 - 2026-04-27

Miscellaneous Tasks

  • chore: Release trueskill-tt version 0.1.1

Other (unconventional)

  • T0 + T1 + T2: engine redesign through new API surface (#1)
  • T3: rayon-backed concurrency (opt-in) (#2)
  • T4 (MarginFactor): scored outcomes via Gaussian-margin EP evidence

0.1.0 - 2026-04-23

Features

  • feat: added a Drift trait and a "default" ConstantDrift implementation

Miscellaneous Tasks

  • chore: added cliff.toml, release.toml and rustfmt.toml
  • chore: clean up
  • chore: make cargo release add CHANGELOG.md before commit
  • chore: do not publish

Other (unconventional)

  • Initial commit.
  • Begin working on batch.
  • Passing tests for Batch
  • Working on History struct. First test is passing.
  • More test passing for History
  • Added more functions to History
  • Remove Display impl, better to use Debug
  • Use flatten instead of flat_map
  • Handle case where there is no time
  • It works, or so it seems
  • Use PlayerIndex instead of String
  • Inline a lot of functions
  • Refactor some code
  • Refactor some stuff
  • Port from julia version instead
  • More things, better things, awesome
  • More tests, more code
  • More things, more tests
  • Fix tests
  • More tests
  • More tests
  • Added builder for History, and start migrating test to use builder instead.
  • Update test to use builder
  • Remove unused code
  • Use and Index struct instead of str and String for player id
  • Update example so now it works, and thats, well, good
  • Update test to use assert_ulps_eq
  • Fixed test
  • Change time to use i64 instead of u64
  • Small change
  • Clean up example
  • Update crates and added methods to get a key or all keys in an IndexMap
  • Added a get function to IndexMap
  • Agents doens't have to be behind a mutable reference in within_prior
  • Agents doens't have to be behind a mutable reference in within_priors
  • Refactor so we can see if there is any way to improve the performance
  • Fix clippy warning
  • More refactoring
  • Remove warnings and refactor some code
  • Added benchmark for Batch
  • Added default implementation for TeamMessage
  • Remove unused mut reference
  • Make it more rusty
  • More rustifying
  • Small refactor
  • Rename d to diff, and t to team
  • Added more links to readme
  • Fix broken link in README
  • Update crates
  • Clean up
  • Dry my eyes
  • Remove unnecessary allocations
  • Fix clippy warning
  • Refactor history
  • Rename variables
  • Move stuff around
  • Added quality function
  • Make quality a free standing function instead
  • Improve performance
  • Change assert to debug_assert
  • Added todo to readme, and documentation for quality function
  • Basic test for quality
  • Ignore temp folder
  • Update edition
  • Small changes for new 2024 edition
  • remove notepad
  • added benchmark

Styling

  • style: cargo fmt