Repository navigation
StatLine v4.0.0rc1 #7
amillolive
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Changelog
[4.0.0rc1] - 2026-08-30
Release Summary
StatLine 4.0.0rc1 is a major architectural rebase of StatLine 3.0.0. It reorganizes the runtime into explicit
core,gateway, andapplayers, introduces portable StatPacks, replaces the SLAPI v3 HTTP surface with a consolidated v4 API, adds dataset-aware adapter expressions, and formalizes independent release metadata for the core, gateway, and application layers.The high-level local Python API and most CLI workflows remain recognizable, but this release intentionally removes compatibility shims for the old package/module layout and direct SLAPI v3 endpoints. Applications importing internal v3 modules or calling v3 HTTP routes will require migration.
Added
Added package version
4.0.0rc1.Added generation/layer release metadata through:
statline/RELEASEstatline._release.ReleaseInfostatline._release.RELEASEcore,gateway, andapprelease counters.Added generation 4 release values:
4111Added
ARCHITECTURE.mddocumenting the StatLine rebase architecture and module-ownership rules.Added explicit runtime layers:
statline.corefor adapters, datasets, scoring, StatPacks, types, and shared tools.statline.gatewayfor HTTP, authentication, adapter discovery, and persistence.statline.appfor CLI, server runner, TUI, and developer tooling.Added
python -m statlinesupport throughstatline.__main__.Added a populated
statline.sdkas a stable SDK surface exposing:score(),run_statpack().Added the StatPack package format for portable scoring packages.
Added StatPack lifecycle APIs for:
Added the
statline statpackCLI group with:manifestpackrenderunpackinspectregisterunregisterAdded top-level
statline run <pack.statpack>support for running trusted StatPacks.Added StatPack runner output support for:
Added StatPack dataset embedding when
metadata.datasetreferences a bundled dataset.Added split StatPack schema sections such as:
dimensionssnifffiltersbucketsmetricsefficiencyweightspenaltiesscore_profilesAdded a bundled unpacked
eba_playersStatPack source understatline/public/statpacks/.Added
.statpackfile-type metadata with:Added safe StatPack extraction checks that reject:
Added secret isolation for StatPack subprocesses. API keys and secret-like environment variables are removed by default unless explicitly allowed with
--inherit-secrets.Added dataset aggregate functions to the adapter expression language:
dataset_max("HEADER")dataset_min("HEADER")dataset_mean("HEADER")dataset_median("HEADER")dataset_sum("HEADER")dataset_count("HEADER")Added case-insensitive dataset aggregate lookup across arbitrary raw input headers.
Added shared batch-level dataset context so aggregate values are computed once and reused while mapping every row.
Added one-row aggregate behavior so single-row scoring treats the submitted row as a one-row dataset.
Added adapter/dataset matching helpers for:
Added a process-wide adapter registry with:
Added canonical dotted adapter identifiers and separator normalization.
Added separate adapter schema directories:
schemas/current/schemas/deprecated/Added current v4 adapters:
eba.playerseba.teamse302.playersAdded bundled datasets:
EBA_Elevate302/e302.s1.players.csvEBA_Elevate302/eba_players_gp3_plus.csvEBA_Elevate302/statline-players(1).csvAdded SLAPI/Gateway v4 endpoints for:
Added a single
/v4/scorerequest model that can score exactly one of:rowrowsdatasetAdded
input_kind=raw|mapped,caps_mode=batch|row,include_mapped, and dataset scoring limits to the v4 score API.Added v4 authentication, moderation, and administration routes under:
/v4/auth/v4/moderation/v4/adminAdded structural architecture tests enforcing the new package layout and module-ownership conventions.
Added dataset aggregate tests.
Added end-to-end StatPack lifecycle tests.
Expanded public API tests for current/deprecated adapter registration and v4 scoring behavior.
Changed
Changed package metadata from
3.0.0to4.0.0rc1.Changed
statline.__version__from a hard-coded package constant toimportlib.metadata.version("statline"), with0+unknownas the source-tree fallback when distribution metadata is unavailable.Reworked the package architecture around the new
core,gateway, andapplayer boundaries.Changed
statline/cli.pyinto a small command-line façade, with the main CLI implementation moved tostatline/app/cli/main.py.Changed the
slapiconsole entry point fromstatline.slapi.__main__:maintostatline.app.runner.main:main.Moved the FastAPI application into
statline.gateway.http.Moved the server runner into
statline.app.runner.Moved the TUI into
statline.app.tui.Moved logging/path helpers into
statline.core.tools.Moved timing types into
statline.core.types.Split flat scoring modules into:
statline.core.scoring.mapstatline.core.scoring.normalizestatline.core.scoring.scorestatline.core.scoring.weightsSplit dataset functionality into:
statline.core.datasets.loadstatline.core.datasets.resolveReworked adapter types into
statline.core.types.adapters.Reworked adapter loading into dedicated load, path, validation, matching, compilation, and registry modules.
Changed current adapter identity metadata toward the required
metadatablock containing:idtitleversionauthorChanged current adapter IDs to lowercase dotted identifiers such as
eba.playersandeba.teams.Changed adapter name lookup so dots, underscores, hyphens, whitespace, and slashes normalize to a common lookup representation.
Kept legacy top-level adapter metadata readable for deprecated adapters by converting it into the new metadata structure during loading.
Moved
demo,example, andvalorantadapters intoschemas/deprecated/while keeping them discoverable.Reworked
eba_playersinto the canonicaleba.playersv4 adapter.Added a second
e302.playersidentity targeting the EBA/Elevate302 player data.Expanded the EBA player adapter from 15 direct metrics and 18 efficiency metrics to 23 direct metrics and 20 efficiency metrics.
Added EBA player scoreability/reliability metrics including:
real_gpreal_gp1no_realrel_gpstat_totalstat_activescoreableno_scoregp_shareAdded EBA player
scoring_gravityandgpbuckets.Changed EBA player relative-GP calculation to use the submitted dataset's maximum
GPthroughdataset_max("GP").Added schema-driven EBA player filters for:
Revised EBA player clamps, scoreability behavior, efficiency calculations, bucket weights, and scoring signals.
Reworked
eba_teamsinto canonicaleba.teamsversion4.0.0.Changed EBA team bucket names from the old offense/defense shorthand to explicit
offenseanddefensebuckets.Added an EBA team
formbucket.Changed team streak scoring to participate directly in recent-form weighting.
Revised EBA team PRI, standings, and predictive weight distributions to account for the form bucket.
Changed packaged dataset storage from
statline/data/stats/tostatline/core/datasets/.Expanded the packaged dataset registry from six CSV files in 3.0.0 to nine CSV files in 4.0.0rc1.
Changed dataset discovery to use a canonical packaged root with safe path resolution and ambiguity detection.
Changed
map_batch()so all rows share one precomputed dataset aggregate context.Changed batch raw scoring so raw filters execute before aggregate context/mapping and mapped metric filters execute after mapping but before score-context calculation.
Changed public custom-adapter resolution to require
map_raw; the oldermap_raw_to_metricsfallback is no longer accepted bystatline.public.Reworked the SLAPI HTTP API from many specialized v3 scoring routes into the consolidated v4 resource model.
Replaced separate v3 adapter metadata endpoints with one
/v4/adapters/{adapter}document containing inputs, metrics, buckets, filters, dimensions, weights, penalties, and score profiles.Replaced the separate v3 map/calc/PRI/score HTTP operations with
/v4/score.Changed moderation routes from
/v3/mod/...to/v4/moderation/....Changed API-key HTTP naming toward
api-key/api-keys/api-key-requests.Added an internal CLI request-translation layer so existing CLI workflows can target the consolidated v4 remote API without retaining v3 server routes.
Changed dataset API responses to include structured dataset summaries and paginated row responses.
Changed health output to include the active adapter count.
Changed build configuration to package datasets from
statline/core/datasets/**/*.csv.Added
statline/RELEASEto wheel and source-distribution contents.Added
ARCHITECTURE.mdand typing stubs to source distributions.Removed the development upper bound on
pytest>=8.1.Changed the development
twinerequirement to>=7.0,<8.0.Fixed / Improved
games_played,gp, andgames.Removed
Removed the
statline.slapipackage namespace.Removed the old flat
statline.servicesnamespace.Removed the old flat
statline.utilsnamespace.Removed the old top-level
statline.tuinamespace; TUI functionality now lives understatline.app.tui.Removed the old
statline.datapackage layout.Removed the old top-level
statline.datasetsmodule.Removed the old flat core modules:
statline.core.calculatorstatline.core.normalizationstatline.core.scoringstatline.core.weightsRemoved the old
statline/core/adapters/defs/adapter location.Removed the old
statline/core/adapters/loader.pyandtypes.pylayout.Removed direct server exposure of the SLAPI v3 scoring and adapter-metadata API.
Removed separate server endpoints for:
/v3/map/row/v3/map/batch/v3/calc/pri/v3/calc/pri/batch/v3/pri/row/v3/pri/batch/v3/score/row/v3/score/batch/v3/adapter/{adapter}/...metadata resources.Removed compatibility shims for the old package namespaces as part of the rebase.
Removed the public-API fallback for custom adapters exposing only
map_raw_to_metrics.Removed the build expectation for
statline/slapi/storage/migrations/*.sql.Breaking Changes
statline.slapi,statline.services,statline.utils,statline.tui,statline.datasets, or the old flat core scoring modules must migrate to the newcore,gateway, orapppaths./v3/...to/v4/.... The v4 server does not retain the old scoring/metadata route surface./v4/scorewraps results with adapter/source/count metadata and supportsrow,rows, ordatasetinput rather than exposing separate score/map/calc routes./v4/adapters/{adapter}rather than the old individual weights, metrics, inputs, dimensions, filters, traits, and spec endpoints./v4/moderationand the new hyphenated API-key resource names.eba_playersandeba_teamsnow report canonical IDseba.playersandeba.teams. Legacy stems/aliases remain resolvable by the adapter registry, but code comparing returned adapter names literally may need updates.metadata.id,metadata.title,metadata.version, andmetadata.author.statline/data/stats/...tostatline/core/datasets/....map_raw.map_raw_to_metricsalone is no longer sufficient.statline.__version__now comes from installed distribution metadata rather than a hard-coded source constant.Known RC1 Issues
test_manifest_render_unpack_and_run_round_trip, where StatPack-rendered adapter headers use the StatLine package version while the test expects the adapter'smetadata.version.0+unknown.4.0.0rc1.statline/core/datasets/data/stats/...paths; the actual packaged dataset root isstatline/core/datasets/....# Version: 3.0.1text even though their adapter metadata reports version4.0.0.Find it on PyPI: https://pypi.org/project/statline/
This discussion was created from the release StatLine v4.0.0rc1.
All reactions