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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/legion/extensions/llm/inventory/identity.rb +4 -2
- data/lib/legion/extensions/llm/version.rb +1 -1
- data/spec/legion/extensions/llm/conformance/ssot_provider_examples.rb +3 -3
- data/spec/legion/extensions/llm/inventory/identity_spec.rb +11 -4
- 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: e3a6411175e21627e4ebe35751eff6e1f202cb9ed82ad8ffd9d37cae6311849d
|
|
4
|
+
data.tar.gz: b19ea34c0104010f2bd63db81729e123b79dfd3cb56b61ad5967cd03e54890d5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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)
|
|
@@ -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 '
|
|
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
|
-
|
|
170
|
-
|
|
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 '
|
|
206
|
-
|
|
207
|
-
|
|
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 '
|
|
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
|