Release 0.6.0 (deflated expectancy; monitor calibration in years) - #117
Merged
Conversation
Bumps pyproject and crucible.__version__ to 0.6.0 and moves [Unreleased] into a dated [0.6.0] section. The second release today, which is deliberate rather than sloppy. 0.5.0 shipped the edge monitor; running it against a real 47-market book rather than the synthetic fixtures it was built on immediately exposed three calibration problems and confirmed the one gap already known. Shipping the monitor and then leaving those in a published version for weeks is worse than two tags in one day. In order of how much it matters to anyone already on 0.5.0: 1. deflated_expectancy exists (#116). 0.5.0's EdgeBaseline accepted a deflated number and nothing in the package produced one, so every real baseline was the raw in-sample mean and the monitor's central argument was a docstring. 2. The false-alarm budget is denominated in years, not trades (#115). Any design built under 0.5.0 against a baseline that knows its firing rate recalibrates here, and for a slow book substantially: the old default gave a 23-trades/yr book a nominal detection latency of 24 years. 3. The opportunity-set channel works for logs without entry_date (#115), where 0.5.0 silently switched it off for an ordinary class of books. 378 tests pass, ruff clean on src/tests/examples, mkdocs --strict clean, and the version reads identically in pyproject, crucible.__version__ and the changelog heading (the release workflow refuses a mismatched tag, and tests/test_boundaries.py pins the other two together). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
pyproject.tomlandcrucible.__version__to 0.6.0 and moves[Unreleased]into a dated[0.6.0]section.Why a second release today
Deliberate rather than sloppy. 0.5.0 shipped the edge monitor this morning; running it against a real 47-market book rather than the synthetic fixtures it was built on immediately exposed three calibration problems and confirmed the one gap already known. Leaving those in the published version for weeks is worse than two tags in one day.
What's in it, ordered by impact on anyone already on 0.5.0
1.
deflated_expectancyexists (#116). 0.5.0'sEdgeBaselineaccepted a deflated number and nothing in the package produced one, so every real baseline was the raw in-sample mean — the number the search optimized. The monitor's central argument, that decay should be measured from a search-corrected reference, was a docstring. It is now a function.2. The false-alarm budget is denominated in years, not trades (#115). This recalibrates any design built under 0.5.0 against a baseline that knows its firing rate, and for a slow book substantially: the old default gave a 23-trades/yr book a nominal detection latency of 24 years.
3. The opportunity-set channel works for logs without
entry_date(#115). Under 0.5.0 it silently switched itself off for an ordinary class of books — the channel covering a signal that stops firing, which neither other channel can see.Minor rather than patch on the merits: #2 changes behaviour and #1 adds public API.
Verification
ruff check src tests examples(0.15.22): cleanmkdocs build --strict: cleanpyproject.toml,crucible.__version__and the changelog heading. The release workflow refuses a mismatched tag, andtests/test_boundaries.pypins the other two together.After merge
Tag
v0.6.0on the merge commit to trigger Trusted Publishing. I will not push that tag without explicit confirmation — the publish is irreversible and a version number can never be reused.🤖 Generated with Claude Code