legion-llm 0.12.2 → 0.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/legion/llm/inference/executor.rb +15 -1
- data/lib/legion/llm/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 733b0a06bf37557dfe7c661d6d63596e30ef5cde4b01c9ae12e801c5257b684e
|
|
4
|
+
data.tar.gz: f24cfe5b32ed137a47efaac7adf57f348d911cb1f511fbdfc5a769ce54d7c32a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c006671e6a1dc02bff77b18e3c31dc4cb771ffd1ba5a6b773e2d7a62a9e886b76e95fb1e9780b0c1285e0165a218112f239fe088ceae9296da440918bd682648
|
|
7
|
+
data.tar.gz: 14eaff3d563eb80e058f699bca53c79308642f745710c1a546b7e00ecfde049129d90e91a52cea5e13a0e19c39afb1282daf1228640680b8f7b94db777676f81
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Legion LLM Changelog
|
|
2
2
|
|
|
3
|
+
## [0.12.3] - 2026-06-02
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **Escalation retries all instances of a broken provider** — When a `StandardError` fires during an escalation attempt (e.g. a code bug in the provider adapter), the loop previously retried every other registered instance of the same `provider+model` combination before giving up. New `skip_all_provider_model_instances!` marks all chain entries with the same `provider+model` as tried on the first `StandardError`, so escalation immediately advances to a different provider. Transient error paths (rate limit, auth, context overflow) are unaffected (inference/executor.rb)
|
|
7
|
+
|
|
3
8
|
## [0.12.2] - 2026-06-02
|
|
4
9
|
|
|
5
10
|
### Fixed
|
|
@@ -790,7 +790,7 @@ module Legion
|
|
|
790
790
|
handled: true)
|
|
791
791
|
false
|
|
792
792
|
rescue StandardError => e
|
|
793
|
-
|
|
793
|
+
skip_all_provider_model_instances!(resolution, tried)
|
|
794
794
|
record_escalation_failure(e, resolution, start_time,
|
|
795
795
|
outcome: :error,
|
|
796
796
|
operation: 'llm.pipeline.escalation_attempt')
|
|
@@ -935,6 +935,20 @@ module Legion
|
|
|
935
935
|
end
|
|
936
936
|
end
|
|
937
937
|
|
|
938
|
+
def skip_all_provider_model_instances!(failed_resolution, tried)
|
|
939
|
+
chain = @escalation_chain
|
|
940
|
+
return unless chain.respond_to?(:each)
|
|
941
|
+
|
|
942
|
+
chain.each do |r|
|
|
943
|
+
next if r.provider != failed_resolution.provider || r.model != failed_resolution.model
|
|
944
|
+
next if tried.any? { |t| t[:provider] == r.provider && t[:instance] == r.instance && t[:model] == r.model }
|
|
945
|
+
|
|
946
|
+
log.warn "[llm][escalation] action=skip_provider_model provider=#{r.provider} model=#{r.model} " \
|
|
947
|
+
"instance=#{r.instance} reason=provider_error"
|
|
948
|
+
tried << { provider: r.provider, instance: r.instance, model: r.model }
|
|
949
|
+
end
|
|
950
|
+
end
|
|
951
|
+
|
|
938
952
|
def escalation_attempt_hash(resolution, outcome:, failures:, duration_ms:)
|
|
939
953
|
attempt = { model: resolution.model, provider: resolution.provider, tier: resolution.tier,
|
|
940
954
|
outcome: outcome, failures: failures, duration_ms: duration_ms }
|
data/lib/legion/llm/version.rb
CHANGED