lex-llm 0.7.2 → 0.7.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: e91ed0737e9946e5fce06f1a594f3139ea3f5dfd55e7e4a757fb66b77a099d13
4
- data.tar.gz: 9284cbd89a01863b1d2226296b23d33250785b7988094d1b9e0223fb31cbbcb9
3
+ metadata.gz: e3a6411175e21627e4ebe35751eff6e1f202cb9ed82ad8ffd9d37cae6311849d
4
+ data.tar.gz: b19ea34c0104010f2bd63db81729e123b79dfd3cb56b61ad5967cd03e54890d5
5
5
  SHA512:
6
- metadata.gz: e8d7a88f398636313e23b74c8749b709e8400f5d67f86fa55f5d94cbfa2a9c1b4f47910d86020d0641ddfa2ae615de8759a9f6a233fdf53473c4dd48f0e7dd81
7
- data.tar.gz: 443f471cf5875ddfa9995376cb3bbcce9a73cd16c3bcfffd3d1b101bb6e3fd0d1471c3c69052626b39b720909842f5e5a68961991a78bfee84a3d99488a971b6
6
+ metadata.gz: 9c913c74bff87677f3d9dd0eaa6bad854a74c5d54794aebecf8371b9791166783fc35c4d33a459c1caf9314cf16674e05a7b11ef426b29df1b275465bd32c939
7
+ data.tar.gz: 7a7dd7e3b3414031bfd6807732c8bcf14e03075c0b020d61ba8621cf9caa32d08be5951b72a995c70ba6042778d1ef732b1b053b92aa0c3813a5636e7f265095
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.3 - 2026-08-17
4
+
5
+ ### Fixed
6
+ - **Instance identity: `default` is no longer a reserved instance_id** — the name is an operator label; synthetic-default protection is provider-side (template-conditional discovery skip). `Inventory::Identity::InstanceKey` now accepts `instance_id: 'default'` as a plain label (v2 parity — v2 lane validation had no reserved-name concept and `:default` was the stock instance label). The reserved-value rule was invented in the 8/13 identity freeze with no rationale and never appeared in the frozen binding conformance fixture. The shared `'an SSOT v3 provider adapter'` conformance example was updated to the new semantics; provider gemspec floors bump to `>= 0.7.3` in the concurrent provider wave.
7
+
3
8
  ## 0.7.2 - 2026-08-17
4
9
 
5
10
  ### Fixed
@@ -109,14 +109,16 @@ module Legion
109
109
  # and diagnostics. It is NOT identity: it never participates in
110
110
  # equality, hashing, or registry-scope identity, so two config names
111
111
  # pointing at the same endpoint stay distinct instances.
112
+ #
113
+ # There are NO reserved instance_id values (v2 parity): "default" is
114
+ # an ordinary operator label. Synthetic default-template protection
115
+ # lives provider-side (template-conditional discovery skip).
112
116
  InstanceKey = ::Data.define(:provider_family, :instance_id, :physical_id) do
113
117
  def initialize(provider_family:, instance_id:, physical_id: nil)
114
118
  family = Identity.normalize_text(value: provider_family, field: :provider_family).downcase
115
119
  raise Errors::ValidationError, 'provider_family must match /\A[a-z][a-z0-9_]*\z/' unless family.match?(/\A[a-z][a-z0-9_]*\z/)
116
120
 
117
121
  instance = Identity.normalize_text(value: instance_id, field: :instance_id)
118
- raise Errors::ValidationError, 'instance_id must not be the reserved value "default"' if instance == 'default'
119
-
120
122
  physical = physical_id.nil? ? nil : Identity.normalize_text(value: physical_id, field: :physical_id)
121
123
 
122
124
  super(provider_family: family.to_sym, instance_id: instance, physical_id: physical)
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Llm
6
- VERSION = '0.7.2'
6
+ VERSION = '0.7.3'
7
7
  end
8
8
  end
9
9
  end
@@ -164,10 +164,10 @@ RSpec.shared_examples 'an SSOT v3 provider adapter' do
164
164
  expect(ssot_harness.inference_call_count(callable: context[:callable])).to eq(1)
165
165
  end
166
166
 
167
- it 'rejects provider/model defaults and a nil instance' do
167
+ it 'accepts "default" as a plain instance_id label and rejects a nil instance' do
168
168
  identity = Legion::Extensions::Llm::Inventory::Identity
169
- expect { identity::InstanceKey.new(provider_family: ssot_harness.provider_family, instance_id: 'default') }
170
- .to raise_error(Legion::Extensions::Llm::Inventory::Errors::ValidationError)
169
+ key = identity::InstanceKey.new(provider_family: ssot_harness.provider_family, instance_id: 'default')
170
+ expect(key.instance_id).to eq('default')
171
171
  expect { identity::InstanceKey.new(provider_family: ssot_harness.provider_family, instance_id: nil) }
172
172
  .to raise_error(Legion::Extensions::Llm::Inventory::Errors::ValidationError)
173
173
  end
@@ -202,9 +202,16 @@ RSpec.describe Legion::Extensions::Llm::Inventory::Identity do
202
202
  .to raise_error(errors::ValidationError)
203
203
  end
204
204
 
205
- it 'rejects the reserved instance_id "default"' do
206
- expect { instance_key_class.new(provider_family: 'vllm', instance_id: 'default') }
207
- .to raise_error(errors::ValidationError)
205
+ it 'accepts "default" as a plain instance_id label (no reserved values — v2 parity)' do
206
+ key = instance_key_class.new(provider_family: 'vllm', instance_id: 'default')
207
+ expect(key.instance_id).to eq('default')
208
+
209
+ other = instance_key_class.new(provider_family: 'vllm', instance_id: ' default ')
210
+ expect(key).to eq(other)
211
+ expect(key.hash).to eq(other.hash)
212
+
213
+ expect(key.to_h).to eq(provider_family: :vllm, instance_id: 'default', physical_id: nil)
214
+ expect(key.inspect).to include('instance_id="default"')
208
215
  end
209
216
 
210
217
  it 'rejects nil fields' do
@@ -248,7 +255,7 @@ RSpec.describe Legion::Extensions::Llm::Inventory::Identity do
248
255
  expect({ bare => :found }[with_physical]).to eq(:found)
249
256
  end
250
257
 
251
- it 'does not reserve "default" for physical_id (only instance_id is reserved)' do
258
+ it 'accepts "default" for physical_id (no field is reserved)' do
252
259
  key = instance_key_class.new(provider_family: :vllm, instance_id: 'apollo', physical_id: 'default')
253
260
  expect(key.physical_id).to eq('default')
254
261
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO