feat(gateway): forza una versione minima del runner all'hello #2

Merged
claudia merged 1 commit from feat/gateway-min-runner-version into main 2026-06-17 16:57:03 +00:00
Owner

Obiettivo

Forzare la versione del client (runner) lato gateway: rifiutare all'hello i runner troppo vecchi. Replica lo standard gia' presente nel repo per il protocol_version gate, applicato alla runner_version (dichiarata dai runner dal v0.4.0 in poi).

Modifiche

  • config (GW_MIN_RUNNER_VERSION): soglia minima semver. Default "" = controllo disattivato (retrocompat: nessun impatto sui runner attuali).
  • protocol: nuovo codice errore runner_version_too_old + helper parse_version / runner_version_satisfies (confronto numerico componente-per-componente, niente confronto lessicografico; suffisso pre-release troncato alla base release).
  • server (_handle_hello): dopo l'auth dell'agente, se la soglia e' impostata rifiuta i runner con runner_version inferiore o che non la dichiarano affatto (runner < 0.4.0), con messaggio "Aggiorna il runner" e il campo min_runner_version nell'errore.
  • .env.example + README: documentano la nuova variabile.

Scelte di policy (dallo standard del repo)

  • Confronto minimo >= (come MIN_RUNNER_PROTOCOL_VERSION), non ==.
  • Env dedicata con default disattivato (come GW_RUNNER_LATEST_VERSION).
  • Runner senza versione = rifiutato a controllo attivo (tutti i runner >= 0.4.0 la dichiarano).

Test

gateway/.venv ... -m pytest: 48/48 verdi. Nuovi:

  • 5 d'integrazione sul gate hello (sotto-soglia/uguale/sopra/assente rifiutato + default che accetta i vecchi);
  • 9 casi parametrici sull'helper di confronto (incl. 0.10.0 > 0.9.0, pre-release, versione assente, minimo vuoto).

Deploy (lo fa Marcello)

Solo .py, nessuna nuova dipendenza → git -C /opt/soltea-agent-gateway pull + sudo systemctl restart soltea-gateway (NON nginx). Poi impostare GW_MIN_RUNNER_VERSION=<versione> in /etc/soltea-gateway/gateway.env e riavviare per attivarlo.

🤖 Generated with Claude Code

## Obiettivo Forzare la versione del client (runner) lato gateway: rifiutare all'`hello` i runner troppo vecchi. Replica lo standard gia' presente nel repo per il `protocol_version` gate, applicato alla `runner_version` (dichiarata dai runner dal v0.4.0 in poi). ## Modifiche - **config** (`GW_MIN_RUNNER_VERSION`): soglia minima semver. Default `""` = controllo disattivato (retrocompat: nessun impatto sui runner attuali). - **protocol**: nuovo codice errore `runner_version_too_old` + helper `parse_version` / `runner_version_satisfies` (confronto numerico componente-per-componente, niente confronto lessicografico; suffisso pre-release troncato alla base release). - **server** (`_handle_hello`): dopo l'auth dell'agente, se la soglia e' impostata rifiuta i runner con `runner_version` inferiore **o** che non la dichiarano affatto (runner < 0.4.0), con messaggio "Aggiorna il runner" e il campo `min_runner_version` nell'errore. - **.env.example + README**: documentano la nuova variabile. ## Scelte di policy (dallo standard del repo) - Confronto **minimo `>=`** (come `MIN_RUNNER_PROTOCOL_VERSION`), non `==`. - **Env dedicata** con default disattivato (come `GW_RUNNER_LATEST_VERSION`). - Runner **senza versione** = rifiutato a controllo attivo (tutti i runner >= 0.4.0 la dichiarano). ## Test `gateway/.venv ... -m pytest`: **48/48 verdi**. Nuovi: - 5 d'integrazione sul gate hello (sotto-soglia/uguale/sopra/assente rifiutato + default che accetta i vecchi); - 9 casi parametrici sull'helper di confronto (incl. `0.10.0 > 0.9.0`, pre-release, versione assente, minimo vuoto). ## Deploy (lo fa Marcello) Solo `.py`, nessuna nuova dipendenza → `git -C /opt/soltea-agent-gateway pull` + `sudo systemctl restart soltea-gateway` (NON nginx). Poi impostare `GW_MIN_RUNNER_VERSION=<versione>` in `/etc/soltea-gateway/gateway.env` e riavviare per attivarlo. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Aggiunge l'enforcement della runner_version dichiarata dal runner nel frame
hello, speculare al gate gia' esistente su protocol_version.

- config: nuovo GW_MIN_RUNNER_VERSION (default "" = controllo disattivato,
  retrocompat).
- protocol: ERR_RUNNER_VERSION_TOO_OLD + helper parse_version /
  runner_version_satisfies (confronto numerico componente-per-componente,
  pre-release troncata alla base release).
- server: in _handle_hello, dopo l'auth dell'agente, se la soglia e' impostata
  rifiuta i runner con runner_version inferiore O che non la dichiarano affatto
  (runner < 0.4.0), con messaggio "Aggiorna il runner" e min_runner_version.
- .env.example + README documentano la nuova variabile.

Test: 48/48 pytest verdi (5 nuovi d'integrazione sul gate hello + 9 casi
parametrici sull'helper di confronto). Default disattivato = nessun impatto sui
runner esistenti.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claudia deleted branch feat/gateway-min-runner-version 2026-06-17 16:57:03 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Soltea-org/soltea-agent-gateway!2
No description provided.