Release 0.2.0 (deployment monitoring; the orchestrate decay stack) - #20
Merged
Conversation
0.1.0 published 2026-07-23 and main has been 15 commits ahead ever since, carrying
the entire half of the framework that runs AFTER a promotion. Nothing was
installable from PyPI, which is the same shape as the crucible 0.4.0 problem: real
work on main, a changelog that reads as if it shipped, and no tag.
It also makes today's floor fix mean something. The pin was raised to
crucible>=0.6.0 so a PyPI install could not resolve a crucible without
Thresholds.monitor_arl0_years, but PyPI's crucible-stack did not contain the code
that needs it. The built wheel now carries Requires-Dist: crucible>=0.6.0.
Contents: orchestrate.decay + EdgeDecayTrigger, the EdgeBaseline frozen into the
DeploymentLedger beside the DriftEnvelope, trade_r / trade_dates through the trigger
seam, the --edge-decay and --arl0-years flags, docs/api-stability.md, and the
public-API surface pins.
Three changelog problems fixed while consolidating rather than published as they
were:
* Two separate ### Added blocks, because three PRs each prepended one, so the
entries were filed under whichever heading happened to be nearest.
* A ### Changed entry still warning that the crucible>=0.5.0 floor was "not yet
true" and "must not be released before crucible 0.5.0 is on PyPI". Both
conditions have since been met and the floor has moved twice more. The three
steps are now collapsed into one entry that is true as written.
* No ## [0.1.0] heading existed at all, so the published release had no record.
Added with its upload date.
__version__ said 0.1.0.dev0 against a published 0.1.0; now 0.2.0, matching
pyproject.
Verified the way the release workflow will: python -m build then twine check both
artifacts PASSED, and the wheel contains orchestrate/decay.py and
orchestrate/__main__.py. 407 tests pass, ruff clean.
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.
0.1.0 published 2026-07-23 and
mainhas been 15 commits ahead ever since, carrying the entire half of the framework that runs after a promotion. None of it was installable from PyPI, which is the same shape as the crucible 0.4.0 problem: real work on main, a changelog that reads as if it shipped, and no tag.It also makes today's floor fix mean something. The pin was raised to
crucible>=0.6.0so a PyPI install could not resolve a crucible withoutThresholds.monitor_arl0_years— but PyPI's crucible-stack didn't contain the code that needs it. The built wheel now carriesRequires-Dist: crucible>=0.6.0.Contents
orchestrate.decay+EdgeDecayTrigger, theEdgeBaselinefrozen into theDeploymentLedgerbeside theDriftEnvelope,trade_r/trade_datesthrough the trigger seam, the--edge-decayand--arl0-yearsflags,docs/api-stability.md, and the public-API surface pins.Three changelog problems fixed while consolidating
Rather than published as they were:
### Addedblocks, because three PRs each prepended one, so entries were filed under whichever heading happened to be nearest.### Changedentry still warning that thecrucible>=0.5.0floor was "not yet true" and "must not be released before crucible 0.5.0 is on PyPI". Both conditions have since been met and the floor has moved twice more. The three steps are now one entry that is true as written.## [0.1.0]heading existed at all, so the published release had no record. Added with its upload date.__version__said0.1.0.dev0against a published 0.1.0; now0.2.0, matching pyproject.Verification
Reproduced what the release workflow does:
python -m buildthentwine check— both artifacts PASSED, and the wheel containsorchestrate/decay.pyandorchestrate/__main__.py. 407 tests pass, ruff clean.Tag
v0.2.0after merge.🤖 Generated with Claude Code