Skip to content

fix(deps): raise the crucible floor to 0.6.0, and guard the floor itself - #19

Merged
mspinola merged 1 commit into
mainfrom
claude/crucible-floor-0-6-0
Aug 3, 2026
Merged

fix(deps): raise the crucible floor to 0.6.0, and guard the floor itself#19
mspinola merged 1 commit into
mainfrom
claude/crucible-floor-0-6-0

Conversation

@mspinola

@mspinola mspinola commented Aug 3, 2026

Copy link
Copy Markdown
Owner

--arl0-years builds Thresholds(monitor_arl0_years=...), added in crucible 0.6.0, but it merged while the pin still read crucible>=0.5.0. 0.5.0's Thresholds has no such field, so a fresh pip install crucible-stack could resolve a crucible that raises TypeError the first time anyone passes the flag. It resolves, it installs, and it fails at the call site.

Why nothing caught it

Nothing could have. A floor is only ever exercised by the version you do NOT have, and every checkout in this workspace already runs 0.6.0. The existing compat tests run against whatever is installed, which is normally the newest thing, so they confirm the API exists while saying nothing about the oldest version the pin still admits.

What this adds

A test that reads the declared floor out of pyproject.toml and compares it against a constant naming the newest crucible feature the package touches. Verified it actually fires — reverting the pin to 0.5.0 fails it. A guard that cannot fail is what this whole class of bug is made of.

Also a compat check for Thresholds.monitor_arl0_years in the existing style, so the failure names its own cause rather than surfacing as a TypeError from a dataclass constructor, and a correction to a stale comment that still warned the 0.5.0 constraint was aspirational.

407 tests pass, ruff clean.

🤖 Generated with Claude Code

--arl0-years builds Thresholds(monitor_arl0_years=...), added in crucible 0.6.0,
but it merged while the pin still read crucible>=0.5.0. 0.5.0's Thresholds has no
such field, so a fresh `pip install crucible-stack` could resolve a crucible that
raises TypeError the first time anyone passes the flag. It resolves, it installs,
and it fails at the call site.

Nothing caught it, and nothing could have. A floor is only ever exercised by the
version you do NOT have, and every checkout in this workspace already ran 0.6.0.
The existing compat tests run against whatever is installed, which is normally the
newest thing, so they confirm the API exists without saying anything about the
oldest version the pin still admits.

So this adds a test that reads the declared floor out of pyproject.toml and
compares it against a constant naming the newest crucible feature the package
touches. Verified it actually fires: reverting the pin to 0.5.0 fails it. A guard
that cannot fail is the thing this whole class of bug is made of.

Also adds a compat check for Thresholds.monitor_arl0_years in the existing style,
so the failure names its own cause rather than surfacing as a TypeError from a
dataclass constructor, and corrects a stale comment that still warned the 0.5.0
constraint was aspirational.

407 tests pass, ruff clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mspinola
mspinola merged commit 9227f67 into main Aug 3, 2026
1 check passed
@mspinola
mspinola deleted the claude/crucible-floor-0-6-0 branch August 3, 2026 03:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant