- New Aenebris.ML.Loader module: pure ByteString -> Either ParseError Ensemble parser for LightGBM v4 plain-text models. Header / tree-blocks / trailing- section state machine; converts split-arrays + leaf-arrays into the unified Tree SoA via unifyChild + complement; rejects non-v4, multi-class, and is_linear=1; extracts embedded sigmoid scale and bare average_output flag; runs validateEnsemble before returning. - Frozen test fixtures under test/fixtures/ml/ (tiny_lgbm_v4.txt, stump_lgbm_v4.txt) hand-crafted from the v4 spec annotated example. CI runs against these with zero Python dependency. - scripts/regen_lgbm_fixture.py: uv-runnable PEP 723 script that retrains a tiny binary GBDT and writes to a separate test/fixtures/ml/regen_sample_v4.txt so the frozen fixtures stay pristine. - 30 new mlLoaderSpec tests covering happy path, header rejection, sigmoid extraction, average_output, tree-level rejection, feature_names with '=', and ParseError reporting. 238 total examples passing, 0 GHC warnings on Loader. |
||
|---|---|---|
| .. | ||
| app | ||
| examples | ||
| scripts | ||
| src/Aenebris | ||
| test | ||
| .gitignore | ||
| .style.yapf | ||
| CHANGELOG.md | ||
| LICENSE | ||
| README.md | ||
| Setup.hs | ||
| WHITEPAPER | ||
| aenebris.cabal | ||
| justfile | ||
| stack.yaml | ||
| stack.yaml.lock | ||
README.md
ⒸAngelaMos | 2026
IN PROGRESS
Ᾰenebris: Next Gen Reverse Proxy
⡋⣡⣴⣶⣶⡀⠄⠄⠙⢿⣿⣿⣿⣿⣿⣴⣿⣿⣿⢃⣤⣄⣀⣥⣿
⢸⣇⠻⣿⣿⣿⣧⣀⢀⣠⡌⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿
⢸⣿⣷⣤⣤⣤⣬⣙⣛⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⡍⠄⠄⢀⣤⣄⠉
⣖⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⢇⣿⣿⡷⠶⠶⢿⣿⣿⠇⢀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣷⣶⣥⣴
⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣦⣌⣛⣻⣿⣿⣧⠙⠛⠛⡭⠅⠒⠦⠭⣭⡻⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠄
⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠹⠈⢋⣽⣿⣿⣿⣿⣵⣾
⣿⣿⣿⣿⣿⣿⣿⣿⠄⣴⣿⣶⣄⠄⣴⣶⠄⢀⣾⣿⣿⣿⣿⣿⣿⠃⠄⠄
⠈⠻⣿⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿⠄⣿⣿⡀⣾⣿⣿⣿⣿⣛⠛⠁
⠄⠄⠈⠛⢿⣿⣿⣿⠁⠞⢿⣿⣿⡄⢿⣿⡇⣸⣿⣿⠿⠛⠁⠄
⠄⠄⠄⠄⠄⠉⠻⣿⣿⣾⣦⡙⠻⣷⣾⣿⠃⠿⠋⠁⠄
License
AGPL 3.0