v0.3.29
max-sixty/worktrunkv0.3.29Oct 7, 2026by github-actions[bot]
Upgrading?
AI Summary
This is a release for the laya repository (not worktrunk). It includes documentation fixes, train improvements, evidence inspection, and various bug fixes.
Key Highlights
- Evidence inspection over checkpoint and eval artifacts
- Add --eval, abstention threshold fitting, and before/after train_report.json
- Rewrite the fine-tuning guide around laya-train
- Docs fixes for examples, evals, hooks, and other areas
- Fix confidence: clear stale low_confidence flag on re-evaluation
New Features
- Evidence inspection feature
- Train improvements with eval support
- Abstention threshold fitting
- Laya-train fine-tuning guide
- Comprehensive documentation corrections
Full Release Notes
## What's Changed * build(deps): cap NumPy below 2 in the onnx extra by @thread3d in https://github.com/NandhaKishorM/laya/pull/947 * feat(evals): evidence inspection over checkpoint and eval artifacts by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/964 * fix(agent): read a state predict_long's questions leave room for in one pass by @JeelGajera in https://github.com/NandhaKishorM/laya/pull/966 * docs(examples): example 18 must not call the shipped answer_confidence calibrated by @aashish254 in https://github.com/NandhaKishorM/laya/pull/973 * docs(examples): example 30 must call score confidence 1 - H/log(k), not the entropy by @aashish254 in https://github.com/NandhaKishorM/laya/pull/974 * docs(examples): example 21 must read its cost claim off the measurement it takes by @aashish254 in https://github.com/NandhaKishorM/laya/pull/975 * docs(evals): the --min-confidence gate flags the answer, it does not overwrite it by @aashish254 in https://github.com/NandhaKishorM/laya/pull/976 * docs(examples): example 26 must count triage_questions()'s three yes/no fields by @aashish254 in https://github.com/NandhaKishorM/laya/pull/978 * docs(tl_kernels): the multiple-of-16 comes from tokens, not rows by @aashish254 in https://github.com/NandhaKishorM/laya/pull/979 * docs(structured): DecisionResult's confidence is per-type, not uniformly entropy by @aashish254 in https://github.com/NandhaKishorM/laya/pull/980 * docs(presets): questions-and-answers must count five, not three by @aashish254 in https://github.com/NandhaKishorM/laya/pull/981 * docs(typescript-sdk): /health returns seven keys, not the three the page listed by @aashish254 in https://github.com/NandhaKishorM/laya/pull/983 * docs(mcp): laya_route_batch row must name its own six keys by @aashish254 in https://github.com/NandhaKishorM/laya/pull/984 * docs(http-api): strict JEV answers carry type, the pages did not say so by @aashish254 in https://github.com/NandhaKishorM/laya/pull/986 * docs(hooks): scope plain callables to on_predict_start=/on_predict_end=, not hooks= by @aashish254 in https://github.com/NandhaKishorM/laya/pull/987 * docs(hooks): api.md blocks must name hooks_timeout like their hooks_raise siblings by @aashish254 in https://github.com/NandhaKishorM/laya/pull/988 * docs(hooks): tracing.md nested-call example must read child run_id from ctx by @aashish254 in https://github.com/NandhaKishorM/laya/pull/989 * docs(hooks): errors.md must enumerate every hooks_raise and hooks_timeout surface by @aashish254 in https://github.com/NandhaKishorM/laya/pull/990 * docs(hooks): lifecycle.md must place process-wide defaults ahead of installed by @aashish254 in https://github.com/NandhaKishorM/laya/pull/991 * docs(readme): batch-hooks bullet must split predict_batch from route_batch by @aashish254 in https://github.com/NandhaKishorM/laya/pull/992 * docs(hooks): patterns.md Composition must name defaults as the head tier by @aashish254 in https://github.com/NandhaKishorM/laya/pull/993 * docs(security): /health sample must filter to revisions, not claim four keys by @aashish254 in https://github.com/NandhaKishorM/laya/pull/994 * docs(hooks): examples.md Composition must name the three tiers, not two by @aashish254 in https://github.com/NandhaKishorM/laya/pull/995 * docs(agent): predict_long gate comments must describe the None contract, not claim a report by @aashish254 in https://github.com/NandhaKishorM/laya/pull/996 * docs(common): render_criterion's docstring must name the separators it passes by @aashish254 in https://github.com/NandhaKishorM/laya/pull/997 * docs(mcp): laya_shortlist's metadata list must name passthrough, the fifth key by @aashish254 in https://github.com/NandhaKishorM/laya/pull/998 * docs(email): email_state's **extra rule must name the None filter it documents by @aashish254 in https://github.com/NandhaKishorM/laya/pull/999 * test(portability): no repo read in tests/ may leave the codec to the runner by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1001 * fix(confidence): a min_confidence map key must name a bucket an answer can produce by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1002 * docs(calibrate): the calibration payload's contract must name binning_map and every shape it refuses by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1003 * docs(examples): example 03 must give `confidence` per question type, not one formula by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1004 * docs: both confidence pages must attribute `confidence` per question type, not as one entropy formula by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1005 * docs(train): rewrite the fine-tuning guide around laya-train by @GuilhermeFusari in https://github.com/NandhaKishorM/laya/pull/1007 * fix(example): the demo's certainty chip must name its question type's formula by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1008 * docs(predict_long): the default window's 64-token floor must be in the docstrings that state the default by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1009 * docs(evals): the calibration column must name its fallback, and the shipped level is not calibrated by @aashish254 in https://github.com/NandhaKishorM/laya/pull/1011 * fix(lang): do not name all-caps acronym and address lines as foreign prose by @keemsisi in https://github.com/NandhaKishorM/laya/pull/1013 * refactor(finetune): converge single-process wrappers on laya.train by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/965 * feat(train): add --eval, abstention threshold fitting, and before/after train_report.json (#887) by @Swatantra-66 in https://github.com/NandhaKishorM/laya/pull/967 * fix(train): warn when fine-tune predictions collapse to the class prior by @tiagovilasboas in https://github.com/NandhaKishorM/laya/pull/968 * docs(examples): example 40 must not call answer_confidence calibrated by @aashish254 in https://github.com/NandhaKishorM/laya/pull/972 * docs(mcp): laya_decide row must list min_confidence; every tool row must name every handler param by @aashish254 in https://github.com/NandhaKishorM/laya/pull/985 * feat(research): three-seed RLCD vs soft-CE default-loss panel for #887 by @Bruce-Yii in https://github.com/NandhaKishorM/laya/pull/1012 ## New Contributors * @JeelGajera made their first contribution in https://github.com/NandhaKishorM/laya/pull/966 **Full Changelog**: https://github.com/NandhaKishorM/laya/compare/v0.3.28...v0.3.29
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one