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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5c5db81b61e68e29fd4a0ebdb612b8032145bac6ef1e2e70a6578b4dff3c9e4
4
- data.tar.gz: 6ea03a18b9e7e448607d168af2c8c54bbccee3bb942670cd6adc5d1e673ca115
3
+ metadata.gz: 733b0a06bf37557dfe7c661d6d63596e30ef5cde4b01c9ae12e801c5257b684e
4
+ data.tar.gz: f24cfe5b32ed137a47efaac7adf57f348d911cb1f511fbdfc5a769ce54d7c32a
5
5
  SHA512:
6
- metadata.gz: 13ec651f801eede51e8389244609bd4d74a38ecd385815aeca5bb22ef9cb9a6df35ef12ab0bb99d92e1fa96f08a730d72d03302d5a268631db38c96fdf5ba938
7
- data.tar.gz: e9798e55b838b440ec1608ddb25424124bf36885a7fef46c3c445fc662361a7c5a82951aa38aedc63934242d363fb67ebdad6ff13060eee272a234b6ef450da7
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
- tried << { provider: resolution.provider, instance: resolution.instance, model: resolution.model }
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 }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module LLM
5
- VERSION = '0.12.2'
5
+ VERSION = '0.12.3'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.12.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity