Skip to content

feat!: rename the package, image and environment variables to granite-switch-decision - #15

Merged
planetf1 merged 4 commits into
mainfrom
feat/rename-granite-switch-decision
Oct 25, 2026
Merged

planetf1 merged 4 commits into
mainfrom
feat/rename-granite-switch-decision

Conversation

@planetf1

@planetf1 planetf1 commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

The plugin serves two routes, /v1/decisions and /v1/systemone, but its package, image and environment variables were all named after one of them. This renames them to granite-switch-decision. Anything specific to the /v1/systemone route keeps its name.

This is a breaking change for anyone who has installed or deployed 0.1.x, so it ships as 0.2.0.

Before After
image and distribution granite-switch-systemone granite-switch-decision
Python package and entry point granite_switch_systemone granite_switch_decision
VLLM_PLUGINS=register_granite_switch,granite_switch_systemone VLLM_PLUGINS=register_granite_switch,granite_switch_decision
SYSTEMONE_* (11 environment variables) DECISION_*, same suffixes (for example SYSTEMONE_SPEECH_INPUT is now DECISION_SPEECH_INPUT)
SystemOnePlugin, app.state.systemone_* DecisionPlugin, app.state.decision_*
0.1.3 0.2.0

There is no fallback to the old variable names. An old name is now ignored without an error, so anyone who sets SYSTEMONE_INVOCATION_MARKER or SYSTEMONE_ADAPTER_NAME has to change them to DECISION_INVOCATION_MARKER and DECISION_ADAPTER_NAME. The image sets its own defaults, so the container is unaffected unless you override them. The shorter prefix is deliberate: these are read only by the vLLM process, and the long form gave names of up to 50 characters.

Unchanged: the /v1/systemone path, SystemOneRequest and SystemOneResponse, the jev wire-format tests, and the published 0.1.3 image history (STATUS and the README name it as it was then).

Before the image can be pulled by its new name: the GitHub repository has to be renamed, because the workflow takes the image name from github.repository. Making the new ghcr package public is a separate step for an org admin. The README commands use the new name, so they work only after both.

Tested:

  • pytest: 226 passed, 4 skipped, in a fresh venv with pip install -e ".[dev]". The only entry point registered is granite_switch_decision.
  • ruff check and ruff format --check pass. Five lines were re-wrapped because the longer names pushed them over 119 characters.
  • Live: an 8b checkpoint on one H100 (pip-style install, speech off) with this branch's plugin and the DECISION_* variables: e2e_check 11/11, probe_check 6/6, and accuracy_check unchanged from the same checkpoint on main. Not run on the 30b, on arm64, or through the image under docker run.
  • Build: a build-only image.yml run on this branch built all four images (default and -asr, amd64 and arm64). It ran on the first commit, before the prefix change, which touches no build logic.
  • A wheel built from the tree holds only granite_switch_decision and registers one entry point.
  • The rename is mechanical. A normalised diff (rename tokens collapsed) leaves only the re-wrapped lines and the version bump. One constant, SYSTEMONE_BODY in scripts/e2e_check.py, holds a jev request body and keeps its name.

Draft until the live check passes and the repository is renamed.

…-switch-decision

The plugin serves both /v1/decisions and /v1/systemone, so the systemone name
only fits one of its two routes. Everything specific to the /v1/systemone route
keeps its name: the path, SystemOneRequest and SystemOneResponse, and the jev
wire-format tests.

Renamed:
- the Python package and entry point, granite_switch_systemone to granite_switch_decision
  (VLLM_PLUGINS must now list granite_switch_decision)
- the distribution and image, granite-switch-systemone to granite-switch-decision
- every SYSTEMONE_* environment variable to GRANITE_SWITCH_DECISION_*, with no fallback
- SystemOnePlugin to DecisionPlugin, and the shared app.state.systemone_* attributes to decision_*
- the version, 0.1.3 to 0.2.0

Assisted-by: Claude Code
Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
GRANITE_SWITCH_DECISION_* made some names 50 characters long (for example
GRANITE_SWITCH_DECISION_EXPERIMENTAL_SYSTEM_PROMPT). The variables are read only by the
vLLM process, so a short prefix is enough. This applies the new names from the previous
commit under the shorter prefix, and puts SYSTEMONE_BODY back: it is a constant holding a
jev request body in scripts/e2e_check.py, not an environment variable.

Assisted-by: Claude Code
Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
- Last updated is now 2026-10-25.
- tests/test_openai_spec.py collects 41 cases, not 42.
- Say which results were repeated after the rename and which were not.
- The anonymous-install row names the repository as it was then.
- The package docstring now describes both routes, not only /v1/systemone.

Assisted-by: Claude Code
Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Assisted-by: Claude Code
Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
@planetf1
planetf1 marked this pull request as ready for review October 25, 2026 21:42
@planetf1
planetf1 merged commit 67ec106 into main Oct 25, 2026
3 checks passed
@planetf1
planetf1 deleted the feat/rename-granite-switch-decision branch October 25, 2026 21:43
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