lutaml-xsd 1.2.110 → 1.2.112
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cdfdd257c5d78df578d997d512d39f17f9c83b10d4a8928708767b41bb6224b9
|
|
4
|
+
data.tar.gz: c9a0bc6226dd8346324c44af5f93906f851b477895b145ed86a89cc2a70f8538
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f503a443b9e205299c93eadd6c4f878f8fe025a2d0bd0514629fcdd38945f533b948afa656aa3e57bd8b5bfc2ade4213f9c77380d5bcc395c279a23b247c1da6
|
|
7
|
+
data.tar.gz: 1f533117654e06d3e2acde45f3c053eb99c9c41030b9a844fa598482372db23e24029fe3eaf7514ce7033c8a4c94b9bcd11b62209d00e7ab0b56ccc9458e6e66
|
data/TODO.conformance.md
CHANGED
|
@@ -120,7 +120,7 @@ pinned commit) is measured via `rake conformance:w3c`:
|
|
|
120
120
|
|
|
121
121
|
| mode | pass-rate |
|
|
122
122
|
|---|---|
|
|
123
|
-
| pipeline |
|
|
123
|
+
| pipeline | 4644/4696 measured + 5 budget exclusions (98.96% of measured) |
|
|
124
124
|
|
|
125
125
|
(2026-11-02, bundled-stack measurement with the escape,
|
|
126
126
|
hint-following, pattern-alternative, identity-crash, engine-set,
|
|
@@ -144,7 +144,7 @@ lockfile refresh) → 4411 (93.9%) → 4430 (94.3%) → 4435 (94.4%) →
|
|
|
144
144
|
→ 4557 (97.0%) → 4565 (97.2%) → 4569 (97.3%) → 4562 (drift raw) →
|
|
145
145
|
4563 (97.17%, ref-namespace round) → 4573 (97.38%, group-content
|
|
146
146
|
round) → 4578 (97.49%, attribute-prohibition round) → 4585 (97.64%,
|
|
147
|
-
multi-document round) → 4588 (97.7%, type-binding round) → 4592 (97.79%, model-161 ride) → 4611 (98.19%, engine-406 ride) → 4613 (98.23%, temporal-enumeration round) → 4614 (98.25%, simple-type-children round) → 4617 (98.32%, ic-ancestor-scope round), +
|
|
147
|
+
multi-document round) → 4588 (97.7%, type-binding round) → 4592 (97.79%, model-161 ride) → 4611 (98.19%, engine-406 ride) → 4613 (98.23%, temporal-enumeration round) → 4614 (98.25%, simple-type-children round) → 4617 (98.32%, ic-ancestor-scope round) → 4637 (parent-context rounds + chameleon round 1.2.109) → 4637 (nested-type-candidates round, 1.2.110) → 4637 (redefine-cycle round, 1.2.111) → 4644 measured (98.96% of measured, train-adoption round: moxml 0.6.6 + leptris 1.9.418.0), +683 net over the 1.2.43 baseline. The escapes round (PR #197 — \d→\p{Nd},
|
|
148
148
|
\w/\W/\s to their XSD value spaces) collapses Regex 120→69;
|
|
149
149
|
same-step pattern facets now behave as alternatives and
|
|
150
150
|
whitespace-only text reaches the facets intact (PR #200), Regex
|
|
@@ -560,26 +560,66 @@ tuple keys, node-set field violations and absent-field rows handled, cross-eleme
|
|
|
560
560
|
regressions (stash-attributed per row), rspec 1663 green,
|
|
561
561
|
rubocop clean. schR2 stack-overflow note unchanged (crash masked
|
|
562
562
|
by expected-invalid, counted per convention).
|
|
563
|
-
- SCH R2 STACK OVERFLOW (2026-11-
|
|
564
|
-
(expected invalid
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
563
|
+
- SCH R2 STACK OVERFLOW FIXED (2026-11-12, round shipped): the
|
|
564
|
+
SystemStackError on Schema_w3c/schR2/schR2.i (expected invalid;
|
|
565
|
+
masked as pass by the crash-as-invalid convention) is OURS, not
|
|
566
|
+
lutaml-model's — the infinite recursion cycles between the
|
|
567
|
+
§4.2.2 redefined group body and the redefine TARGET (two DISTINCT
|
|
568
|
+
objects reachable by the same group name b-g2), so an OBJECT-keyed
|
|
569
|
+
guard misses it; the cut is NAME-keyed and PATH-scoped in both
|
|
570
|
+
walkers: leaf_particles marks the group name on its ancestry
|
|
571
|
+
(same name cannot expand within its own ancestry; sibling reuse
|
|
572
|
+
still expands fresh) and ContentModelMatcher#compile_group keeps
|
|
573
|
+
the same path discipline over resolved containers. LEDGER vs the
|
|
574
|
+
1.2.110 baseline: 4637/4696 measured + the same 5 reZ budget
|
|
575
|
+
exclusions, ZERO regressions, and batch 4450's crash list is
|
|
576
|
+
EMPTY (schR2.i now assesses honestly to invalid instead of
|
|
577
|
+
overflowing). PROVENANCE: batch 03000 was carried over from the
|
|
578
|
+
1.2.110 ledger — regex-pattern-only cases whose walk never
|
|
579
|
+
touches the guards (the batch's reI003 quadratic tax made a
|
|
580
|
+
re-run cost-prohibitive on the contended machine). Also filed
|
|
581
|
+
lutaml/moxml#540 this round (the 0.6.4 attribute char-ref
|
|
582
|
+
regression below; repro included).
|
|
583
|
+
- TRAIN ADOPTION COMPLETE (2026-11-12, release pending): the
|
|
584
|
+
measurement train moves to moxml 0.6.2→0.6.6 + leptris
|
|
585
|
+
1.9.406.0→1.9.418.0 (moxml#540 CLOSED — the attribute
|
|
586
|
+
character-reference decode is verified restored: attr
|
|
587
|
+
`←` decodes to "←" on 0.6.6). SUITE 4644/4691 measured
|
|
588
|
+
(98.96% of measured) + the same 5 reZ budget exclusions (the
|
|
589
|
+
nested-repeat walks still exceed the 90s per-case watchdog on
|
|
590
|
+
418 — a mid-bisect "faster reZ" reading was sweep-churn noise).
|
|
591
|
+
WINS +11: attgD019/020/021/022/025/027/029/031/033/034 (the
|
|
592
|
+
strict-attribute class through chameleon/imported attributeGroup
|
|
593
|
+
refs — the moxml#522 thread, FIXED at last) and elemZ020
|
|
594
|
+
(leptris-rs#46, the substitution binding). REGRESSIONS −4:
|
|
595
|
+
wildZ013b/c (FILED leptris-rs#72 — strict anyAttribute admission
|
|
596
|
+
through namespace-less-import wildcards now reports "not
|
|
597
|
+
declared (strict)"; the flip is between 1.9.409.0 and 1.9.410.0,
|
|
598
|
+
bisected) and attZ014a/b (FILED leptris-rs#73 — the
|
|
599
|
+
multiple-xs:ID-per-element pair drifted to the XSD 1.1 reading;
|
|
600
|
+
suite-contested 1.0-invalid/1.1-valid, harness takes the 1.0
|
|
601
|
+
expectation). NOT carried by this train: the leptris-rs#45
|
|
602
|
+
stE050/055/065/066 legs and attgC035-038 (still failing on 418 —
|
|
603
|
+
the 407-era wins were lost somewhere in 408-418 and have not
|
|
604
|
+
returned). TOOLING LESSONS, both the hard way: (a) moxml 0.6.6
|
|
605
|
+
CANNOT drive leptris ≤ 1.9.409.0 — the adapter reports unusable
|
|
606
|
+
and silently falls back to nokogiri, so probes answer without an
|
|
607
|
+
engine; check for the fallback warning before trusting any
|
|
608
|
+
probe; (b) `bundle lock --update` RE-RESOLVES to latest and
|
|
609
|
+
silently undoes pin edits — pins go lockfile-version-edit +
|
|
610
|
+
`bundle install` + an installed-version verify, never
|
|
611
|
+
`bundle lock`; (c) the per-case sweep's verdict column stores
|
|
612
|
+
the RAW validity boolean — expected-INVALID rows reading false
|
|
613
|
+
are PASSES; the first assembly inverted them and manufactured 9
|
|
614
|
+
phantom reZ regressions before the correction.
|
|
577
615
|
- TRAIN ADOPTION REGRESSION — CHARACTER REFERENCES (2026-11-11):
|
|
578
616
|
the 2026-11-10 adoption verdict ("conformance-IDENTICAL") was
|
|
579
617
|
WRONG for one class: moxml 0.6.4 stopped decoding numeric
|
|
580
618
|
character references in attribute values. Minimal repro:
|
|
581
619
|
`Moxml::Context.new.parse('<x a="←"/>').root.attributes.
|
|
582
620
|
first.value` → "←" on moxml 0.6.2, literal "←" on 0.6.4.
|
|
621
|
+
FILED lutaml/moxml#540 (2026-11-12; repro: attribute values keep
|
|
622
|
+
the reference literal while element text decodes on 0.6.4).
|
|
583
623
|
Downstream this breaks the whole UNICODE-BLOCK pattern-facet
|
|
584
624
|
class — Regex_w3c Arrows/MathematicalOperators/
|
|
585
625
|
ArabicPresentationForms-A/CJKCompatibilityForms/
|
|
@@ -225,7 +225,20 @@ module Lutaml
|
|
|
225
225
|
container = Array(@group_particles.call(particle)).first
|
|
226
226
|
return empty_fragment unless container
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
# §4.2.2 redefine bodies self-reference by name; the body and
|
|
229
|
+
# the redefine target are distinct objects, so the compile
|
|
230
|
+
# path set keys on the resolved container's identity — a
|
|
231
|
+
# container may not compile within its own ancestry, while
|
|
232
|
+
# sibling reuse still compiles fresh.
|
|
233
|
+
@group_path ||= []
|
|
234
|
+
return empty_fragment if @group_path.include?(container)
|
|
235
|
+
|
|
236
|
+
@group_path.push(container)
|
|
237
|
+
fragment = with_occurrence(particle) do
|
|
238
|
+
compile_container_body(container)
|
|
239
|
+
end
|
|
240
|
+
@group_path.pop
|
|
241
|
+
fragment
|
|
229
242
|
end
|
|
230
243
|
|
|
231
244
|
# A group ref expands to its declaration's container, whose own
|
|
@@ -368,14 +368,31 @@ module Lutaml
|
|
|
368
368
|
end
|
|
369
369
|
end
|
|
370
370
|
|
|
371
|
-
def leaf_particles(particles, repository)
|
|
371
|
+
def leaf_particles(particles, repository, ancestors = nil)
|
|
372
|
+
ancestors ||= {}
|
|
372
373
|
particles.flat_map do |particle|
|
|
373
374
|
case particle
|
|
374
375
|
when Lutaml::Xml::Schema::Xsd::Group
|
|
375
|
-
|
|
376
|
-
|
|
376
|
+
# §4.2.2 redefine bodies self-reference by NAME; the
|
|
377
|
+
# body and the redefine target are DISTINCT objects, so
|
|
378
|
+
# the path set keys on the group name — the same name
|
|
379
|
+
# cannot expand within its own ancestry, while sibling
|
|
380
|
+
# reuse still expands fresh.
|
|
381
|
+
group_name = if particle.name.to_s.empty?
|
|
382
|
+
particle.ref.to_s
|
|
383
|
+
else
|
|
384
|
+
particle.name.to_s
|
|
385
|
+
end
|
|
386
|
+
next [] if group_name.empty? || ancestors.key?(group_name)
|
|
387
|
+
|
|
388
|
+
ancestors[group_name] = true
|
|
389
|
+
body = expand_group_container(particle, repository)
|
|
390
|
+
leaves = body.nil? ? [] : leaf_particles(body, repository, ancestors)
|
|
391
|
+
ancestors.delete(group_name)
|
|
392
|
+
leaves
|
|
377
393
|
when Lutaml::Xsd::Sequence, Lutaml::Xsd::Choice, Lutaml::Xsd::All
|
|
378
|
-
leaf_particles(collect_particles(particle), repository
|
|
394
|
+
leaf_particles(collect_particles(particle), repository,
|
|
395
|
+
ancestors)
|
|
379
396
|
else
|
|
380
397
|
[particle]
|
|
381
398
|
end
|
data/lib/lutaml/xsd/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lutaml-xsd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.112
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-11-
|
|
11
|
+
date: 2026-11-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: liquid
|