Skip to content

The adapter tag format, corrected and pinned: no v - #194

Merged
rohanrkamath merged 2 commits into
mainfrom
fix/adapter-tag-format
Sep 14, 2026
Merged

rohanrkamath merged 2 commits into
mainfrom
fix/adapter-tag-format

Conversation

@arpanghoshal

@arpanghoshal arpanghoshal commented Sep 14, 2026

Copy link
Copy Markdown
Member

Caught while pre-flighting the tags for the 1.1.0 adapter release, by running publish.yml's own
case statement rather than reading it.

The trap

publish.yml strips a leading v from a kernel tag, and reads an adapter tag as everything
after the last hyphen. The two formats differ, and the difference is fatal in one direction:

adapters-langgraph-v1.1.0    tag=v1.1.0   version=1.1.0   REFUSED
adapters-langgraph-1.1.0     tag=1.1.0    version=1.1.0   ACCEPTED
adapters-langgraph-1.1       tag=1.1      version=1.1.0   ACCEPTED
v0.10.0                      tag=0.10.0   version=0.10.0  ACCEPTED

The v that is required on a kernel tag is fatal on an adapter tag, and the failure happens
after the tag is pushed.

What was wrong

The assertion message that shipped with adapters/PUBLISHED.toml told a reader to push
adapters-<name>-v<version>, which is the refused form. That message is read at exactly the moment
somebody is about to tag, so it is the worst place for it to be wrong. Corrected.

What stops it coming back

test_the_tag_an_adapter_release_needs_is_one_publish_yml_accepts transcribes the workflow's two
rules and runs them against the version in the tree. It asserts both directions:

  • the tag this release actually needs is accepted, and
  • the v form is still refused — so if publish.yml ever starts accepting it, that assertion
    fails and the guidance in the test and in PUBLISHED.toml changes in the same commit, rather than
    becoming quietly wrong the other way.

MAJOR.MINOR is accepted as well as the full version, which is SPEC-v0.5 §6.2: adapters version by
version line and the distribution carries the patch.

Pre-flight, for when the tags go out

Run against PyPI just now, since a version number can never be reused:

ctrlrun                  0.10.0  free
ctrlrun-langgraph        1.1.0   free
ctrlrun-openai-agents    1.1.0   free

All three match their pyproject.toml versions, so the workflow's version gate passes for
v0.10.0, adapters-langgraph-1.1.0 and adapters-openai-agents-1.1.0.

Full gate: all checks passed.

Not merging and not tagging.

Summary by CodeRabbit

  • Documentation

    • Added guidance explaining the expected format for adapter release tags, including accepted version formats and prefix requirements.
  • Tests

    • Added coverage to verify adapter release tags follow the documented publishing rules.
    • Clarified test guidance for kernel version tags and adapter tags.

Caught while pre-flighting the tags for the 1.1.0 adapter release, by running publish.yml's own
`case` statement rather than reading it.

`publish.yml` strips a leading `v` from a KERNEL tag and reads an ADAPTER tag as everything after
the last hyphen. So the two formats are different and the difference is fatal one way:

  adapters-langgraph-v1.1.0    tag=v1.1.0   version=1.1.0   REFUSED
  adapters-langgraph-1.1.0     tag=1.1.0    version=1.1.0   ACCEPTED
  adapters-langgraph-1.1       tag=1.1      version=1.1.0   ACCEPTED
  v0.10.0                      tag=0.10.0   version=0.10.0  ACCEPTED

The assertion message added with `adapters/PUBLISHED.toml` told a reader to push
`adapters-<name>-v<version>`, which is the refused form. It is the message somebody reads at exactly
the moment they are about to tag, so it is now the accepted form.

`test_the_tag_an_adapter_release_needs_is_one_publish_yml_accepts` transcribes the workflow's two
rules and runs them against the version in the tree, asserting both that the release's tag is
accepted and that the `v` form is still refused. If publish.yml ever accepts the `v` form, that
assertion fails and the guidance here changes with it, rather than silently becoming wrong in the
other direction.

`MAJOR.MINOR` is accepted as well as the full version, which is SPEC-v0.5 §6.2: adapters version by
version line and the distribution carries the patch.

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: 0ce688b1-3c92-4219-b8b1-c2e458412bc2

📥 Commits

Reviewing files that changed from the base of the PR and between 42a4daf and 3b0b413.

📒 Files selected for processing (2)
  • adapters/PUBLISHED.toml
  • tests/test_packaging.py

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


📝 Walkthrough

Walkthrough

The pull request documents adapter release tag rules and adds packaging coverage for the formats accepted by publish.yml. It also corrects test guidance to omit the v prefix from adapter tags.

Changes

Adapter tag validation

Layer / File(s) Summary
Tag format validation and guidance
adapters/PUBLISHED.toml, tests/test_packaging.py
The new test accepts adapters-<adapter>-<version> and MAJOR.MINOR formats, and rejects adapter tags with a v prefix. Comments, docstrings, and assertion guidance describe the same rule.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 3b0b4

The release-tag guidance and regression coverage align with the publish workflow, with no actionable merge risk identified.

🚥 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: correcting and pinning the adapter tag format without a v prefix.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 …
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/adapter-tag-format

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 88be16a into main Sep 14, 2026
16 checks passed
@rohanrkamath
rohanrkamath deleted the fix/adapter-tag-format branch September 14, 2026 11:26
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