Skip to content

Release 0.13.0 - #82

Merged
trevhud merged 1 commit into
mainfrom
release/v0.13.0
Jul 31, 2026
Merged

Release 0.13.0#82
trevhud merged 1 commit into
mainfrom
release/v0.13.0

Conversation

@trevhud

@trevhud trevhud commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Cuts 0.13.0. Six merged PRs have been sitting unreleased since 0.12.1 — local and PyPI are both still on the old version.

What ships

fan_out dispatches per element on all six runtimes (#76). This is the one user-facing behavior change. It worked on DBOS only; the other five handed the whole upstream list to a single invocation, so the "one call per element" the IR describes was a fiction everywhere but one target, and a judge signature had to accept the batch. Which input is the fanned list resolves in the language-neutral _common.fan_out_element_param, because two adapters disagreeing about that would make one pipeline.yaml mean two different things.

Everything else is the suite's ability to catch regressions (#77#80). Three mutation sweeps, 64 mutations, fifteen gaps closed. Each was a real regression that could have shipped green: per-node timeout: ignorable on Temporal and Cloudflare gates, DEFAULT_MODEL flippable to Opus at ~5× cost, an agent-side cost estimate off by 1000× because it was only compared against itself, rote compile reporting success on a bad config. Plus: every slow e2e suite runs in CI (three of twenty-seven did), all seven checks are now required, and a test can no longer spend inference tokens.

Housekeeping caught while cutting this

  • The three companion version files (CITATION.cff, plugin/.claude-plugin/plugin.json, .claude-plugin/marketplace.json) — the suite pins these against rote.__version__ and correctly failed the bump until they matched.
  • CHANGELOG compare links were stale since 0.9.0; 0.10.0 through 0.12.1 had no entries.

Release gates, run locally

gate result
pytest tests/ 1187 passed
ruff check + format --check clean
mypy src/rote (strict) clean
scripts/sanity-check.sh clean
tag-matches-version check rote.__version__ = 0.13.0
CHANGELOG section extraction (the workflow's awk) 68 lines
wheel build + clean-venv install rote 0.13.0
rote emit from the installed wheel emitted temporal output
skill bundle resolves from site-packages confirmed

After merge: git tag v0.13.0 && git push origin v0.13.0 triggers release.yml (Trusted Publishing, no token secrets).

🤖 Generated with Claude Code

https://claude.ai/code/session_01SBuSDL7Svm7iDzgmhTpDSW

Six merged PRs of correctness and test-quality work, unreleased since
0.12.1.

The user-facing change is fan_out: a node marked `fan_out: true` now
dispatches once per element on all six runtimes, not just DBOS. The
other five handed the whole upstream list to a single invocation, so
the "one call per element" the IR describes was a fiction everywhere
but one target, and judge signatures had to accept the batch.

The rest is the suite's ability to catch regressions. Three mutation
sweeps (64 mutations) found fifteen places where a real regression
would have shipped green — per-node timeouts ignorable on two
runtimes, DEFAULT_MODEL flippable to Opus at ~5x cost, an agent-side
cost estimate that could be off by 1000x because it was only compared
against itself. Every slow e2e suite now runs in CI (three of
twenty-seven did), all seven checks are required, and a test can no
longer spend inference tokens.

Also bumps the three companion version files the suite pins against
the package version, and repairs the CHANGELOG compare links, which
had been stale since 0.9.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SBuSDL7Svm7iDzgmhTpDSW
@trevhud
trevhud merged commit 89ad2ef into main Jul 31, 2026
7 checks passed
@trevhud
trevhud deleted the release/v0.13.0 branch July 31, 2026 23:51
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