Skip to content

0.10.0's release notes were missing a public API addition that ships in it - #198

Merged
rohanrkamath merged 2 commits into
mainfrom
release/0.10.0-changelog
Sep 14, 2026
Merged

rohanrkamath merged 2 commits into
mainfrom
release/0.10.0-changelog

Conversation

@arpanghoshal

@arpanghoshal arpanghoshal commented Sep 14, 2026

Copy link
Copy Markdown
Member

Do not tag until this merges. Found by asking, before tagging, whether main still matches what
release verification ran against. It does not.

The gap

needs_approval gained task= and hop= in #191, which built two of SPEC-v0.10 §9.4's
frozen-but-unbuilt rows and merged after the [0.10.0] section was written:

-def needs_approval(control, action, arguments, *, resource=None) -> bool
+def needs_approval(control, action, arguments, *, resource=None, task=None, hop=None) -> bool

So a public API addition ships in 0.10.0 and the release notes do not mention it. A version number
on PyPI can never be reused
, which is the whole reason to catch this before the tag rather than
after.

The change itself is additive and good: without those parameters the predicate a framework asks
before it invokes evaluated against the receiver's whole candidate set while execute evaluates
against the hop alone. Never a wider grant, because Control.execute is the enforcement point
and refuses either way.

Nothing else in src/ moved since verification ran. The adapter version bumps and
adapters/PUBLISHED.toml are separate distributions on their own version line per SPEC-v0.5 §6.2,
and are not kernel release notes.

Release verification, from a fresh clone of this branch

Not the working tree.

full suite:            4012 passed, 308 skipped   +  9 serial
verify payments.yaml:  24/24 pass, 3 N/A (G13, G15, G27)
verify escalation:     21/21 pass, 6 N/A   G25 PASS, G26 PASS, G27 PASS stripe.payout
demo:                  ok, no network
build:                 ctrlrun-0.10.0.tar.gz and .whl
wheel diff vs 0.9.0:   48 -> 49 modules; added ctrlrun/upstream.py; removed none
import ctrlrun:        pulls in no extra, and not verify or conformance
needs_approval:        ['action','arguments','control','hop','resource','task']

One thing the verification caught about itself: test_the_formatter_leaves_markdown_alone failed
on the first pass because the fresh venv had no ruff and the test shells out to it, so a missing
tool read as a formatting violation. Installed and re-run: green. Worth knowing that this test
reports the same way for "ruff says no" and "ruff is absent".

After this merges

v0.10.0
adapters-langgraph-1.1.0        # no `v`: publish.yml reads everything after the last hyphen
adapters-openai-agents-1.1.0

Kernel first, so the adapters' ctrlrun>=0.5,<0.11 resolves against a kernel that exists on PyPI.
All three version numbers are free there, and all three match their pyproject.toml.

Not merging and not tagging.

Summary by CodeRabbit

  • New Features

    • Added task= and hop= parameters to ctrlrun.adapter.needs_approval, enabling approval checks to evaluate the specific execution hop.
  • Documentation

    • Clarified approval behavior so human approval decisions align with the call that will actually execute.
    • Documented the finalized parameter names and behavior in the specification.

…in it

Found by asking, before tagging, whether main still matches what release verification ran against.
It does not: one src/ file changed after that check.

`needs_approval` gained `task=` and `hop=` in the commit that built two of SPEC-v0.10 section 9.4's
three frozen-but-unbuilt rows, which merged after the [0.10.0] section was written. So the release
notes for a version that ships the change do not mention it, and a version number on PyPI can never
be reused.

The change is additive and good: without those parameters the predicate a framework asks before it
invokes evaluated against the receiver's whole candidate set while execute evaluates against the hop
alone, so it answered "a human is needed" for a call execute then refuses. It was never a wider
grant, because Control.execute is the enforcement point and refuses either way.

Nothing else in src/ moved since the release verification ran. The adapter version bumps and
adapters/PUBLISHED.toml are separate distributions on their own version line, per SPEC-v0.5 section
6.2, and are not kernel release notes.

Signed-off-by: arpan <contact@arpanghoshal.com>
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fa47362d-ef85-49c6-8323-ef04ce75ae86

📥 Commits

Reviewing files that changed from the base of the PR and between c6ad2b0 and 313001a.

📒 Files selected for processing (1)
  • CHANGELOG.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The changelog now documents task= and hop= parameters for ctrlrun.adapter.needs_approval. It records the prior mismatch between pre-invocation predicate evaluation and execute hop evaluation.

Changes

Needs approval release notes

Layer / File(s) Summary
Document needs approval behavior
CHANGELOG.md
Adds a release-note bullet for the task= and hop= parameters and explains the prior approval mismatch.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~2 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 8aa08

This update accurately documents the shipped API parameters without changing production behavior.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: adding the missing public API addition to the 0.10.0 release notes. It is specific, concise, and related to the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/0.10.0-changelog

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@rohanrkamath
rohanrkamath merged commit a01bfb4 into main Sep 14, 2026
14 checks passed
@rohanrkamath
rohanrkamath deleted the release/0.10.0-changelog branch September 14, 2026 12:20
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.

2 participants