Skip to content

feat: Gumloop fork delta vs v0.2.0 (py3.10 bindings wheel, custom_classifier, publish CI) - #1

Merged
rbehal merged 3 commits into
upstream-v0.2.0from
gumloop-main
Aug 11, 2026
Merged

feat: Gumloop fork delta vs v0.2.0 (py3.10 bindings wheel, custom_classifier, publish CI)#1
rbehal merged 3 commits into
upstream-v0.2.0from
gumloop-main

Conversation

@rbehal

@rbehal rbehal commented Aug 11, 2026

Copy link
Copy Markdown

Exactly our delta against upstream v0.2.0 (the upstream-v0.2.0 base branch is the untouched release tag — a PR against main mixes in upstream's own release-branch commits). Trimmed to what our functionality needs: 7 files, 3 commits.

Commit 1 — build target + rename + packaging

  • pyo3 abi3-py312 -> abi3-py310: one cp310-abi3 wheel serves CPython 3.10+ (backend runs 3.10)
  • dist renamed gumloop-nemo-switchyard, version 0.2.0+gumloop.0.1.1 (mirrors gumloop-celery)
  • upstream's core deps (openai/anthropic/httpx/pydantic) move to a new lib extra: the bindings surface switchyard_rust.libsy (all the backend imports) needs none of them, and upstream's floors (anthropic>=0.99, pydantic>=2.13) conflict with backend pins. server/cli/all pull lib transitively
  • switchyard_rust/__init__.py: the two translation exports resolve lazily (they import openai types), keeping the bindings importable with zero dependencies — verified on a bare 3.10 venv
  • scope note: the supported 3.10 surface is the bindings; the full package (lib extra) keeps upstream's 3.12 expectations. We deliberately did not patch upstream's 3.12-isms in switchyard/lib/** or its version-lookup call sites — none of that is on our import path (details in Proposal: lower the wheel's abi3 floor to cp310 NVIDIA-NeMo/Switchyard#366, where the full py3.10 floor is proposed upstream)

Commit 2 — libsy custom N-target classifier binding

custom_classifier(judge_target, targets, *, default_target, config) + CustomClassifierConfig + type stubs + 10 binding tests (pass on the 3.10 wheel). Judge failures and unusable verdicts fall open to default_target inside the library. Filed upstream as NVIDIA-NeMo#365; if merged, this commit drops out of the fork delta.

Commit 3 — publish workflow

Tag-triggered (gumloop-v*) maturin build in the manylinux_2_28 container + upload to us-west1-python.pkg.dev/agenthub-dev/gumloop, authenticated via the GCP_ARTIFACT_REGISTRY_CREDENTIALS secret (ADC: SA key or authorized-user JSON), idempotent on republished tags. This is the only publish path for future versions.

Comment thread .github/workflows/gumloop-publish.yml Fixed
rbehal and others added 2 commits August 11, 2026 20:10
…he lib extra

- pyo3 abi3-py312 -> abi3-py310: one cp310-abi3 wheel serves CPython 3.10+
- dist renamed nemo-switchyard -> gumloop-nemo-switchyard (mirrors gumloop-celery)
- upstream core deps (openai/anthropic/httpx/pydantic) move to the new 'lib'
  extra so embedding hosts don't inherit provider-SDK floors; the bindings
  surface (switchyard_rust.libsy) needs none of them, and its import chain
  defers the translation module that pulls openai types
- the supported 3.10 surface is the bindings; the full package (lib extra)
  keeps upstream's 3.12 expectations

Co-authored-by: Cursor <cursoragent@cursor.com>
Binds LlmClassifierConfig::Custom (CustomClassifierConfig + TargetSelector)
as custom_classifier(judge_target, targets, *, default_target, config):
schema-driven routing across two or more labeled targets; unusable verdicts
and judge failures fall open to default_target. Filed upstream as
NVIDIA-NeMo#365.

Co-authored-by: Cursor <cursoragent@cursor.com>
@rbehal
rbehal changed the base branch from main to upstream-v0.2.0 August 11, 2026 20:14
@rbehal rbehal changed the title Gumloop fork delta: py3.10 wheel, libsy custom_classifier binding, publish CI Gumloop fork delta vs v0.2.0: py3.10 bindings wheel, custom_classifier, publish CI Aug 11, 2026
@rbehal rbehal changed the title Gumloop fork delta vs v0.2.0: py3.10 bindings wheel, custom_classifier, publish CI feat: Gumloop fork delta vs v0.2.0 (py3.10 bindings wheel, custom_classifier, publish CI) Aug 11, 2026
maturin build in the manylinux_2_28 container. Pull requests build the wheel
and run the binding tests on Python 3.10; gumloop-v* tags and manual
dispatches additionally publish, authenticated keylessly via WIF
(vars.GCP_WIF_PROVIDER impersonating agenthub-github-ci-cd). Republished
tags skip wheels already in the simple index.

Co-authored-by: Cursor <cursoragent@cursor.com>
@rbehal
rbehal merged commit a94ec7c into upstream-v0.2.0 Aug 11, 2026
7 checks passed
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