canon 0.3.118 → 0.3.119
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/docs/HANDOFF.adoc +140 -63
- data/lib/canon/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 21b508095633774da379c4f7c13cfaeabce997fbdb400139e7ecf7aedbf3df95
|
|
4
|
+
data.tar.gz: 9528d6c70d4b84f43bf77e5ca7b30a4bbf2ee8f3a172a010d0c6ea90228a9c75
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2de6ab858f2c4ca1ba6b83cad30058af17c2427e9688b13babde2bc249fdf5234d453575c36956b5edc2b343c4876647439b8d604bc5a3bcb96c746759c31a86
|
|
7
|
+
data.tar.gz: 51ac169753e93464ff16be5e869f0d157c1dcc0446311551322fcd19ee120a38a94d5581db9f167436f1d6ed8461b4fedff2899dd1d3fd12b32ac68957521b23
|
data/docs/HANDOFF.adoc
CHANGED
|
@@ -5,43 +5,55 @@ published: false
|
|
|
5
5
|
|
|
6
6
|
A snapshot of the open arcs across the org repos — what is known, where
|
|
7
7
|
to dig, and what has already been proven — so any team can pick an issue
|
|
8
|
-
up cold. Statuses as of 2026-
|
|
8
|
+
up cold. Statuses as of 2026-11-01.
|
|
9
9
|
|
|
10
|
-
==
|
|
10
|
+
== State of the world
|
|
11
|
+
|
|
12
|
+
Shipped since the last board (2026-10-28): leptris 1.9.398.0 (the
|
|
13
|
+
#1866 adopt + parent-of-attribute fixes and the #1846/#1854/#1855 perf
|
|
14
|
+
slices), yeptris 0.6.52.0/0.6.53.0 (marshal reader #322, multibyte
|
|
15
|
+
breaks #782), moxml **0.6.0** (the Opal surface deleted by the owner's
|
|
16
|
+
phase-4 call, lutaml/moxml#516 — the forward Opal path is the moxml-ts
|
|
17
|
+
wasm binding, lutaml/moxml#489), lutaml-model 0.8.155 (admits both
|
|
18
|
+
moxml lines: `>= 0.5.139, < 0.7`), canon 0.3.118 (floors `leptris ~>
|
|
19
|
+
1.9.398`, `yeptris ~> 0.6.52`, `moxml ~> 0.6.0`; Opal lane retired).
|
|
20
|
+
|
|
21
|
+
== lutaml/canon
|
|
11
22
|
|
|
12
23
|
[cols="1,1,2"]
|
|
13
24
|
|===
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|moxml#473 — XSD compile of large occurrence products grows unbounded
|
|
38
|
-
(jetsam SIGKILL, low RSS)
|
|
39
|
-
|Open
|
|
40
|
-
|W3C `particlesZ034_b.xsd` repro in the issue. The compiled automaton's
|
|
41
|
-
product construction needs cardinality folding (`unbounded` inner terms
|
|
42
|
-
to epsilon-loops) instead of enumeration.
|
|
25
|
+
|Item |Status |Known + first moves
|
|
26
|
+
|
|
27
|
+
|Floors raised (0.3.118)
|
|
28
|
+
|Shipped
|
|
29
|
+
|`leptris ~> 1.9.398`, `yeptris ~> 0.6.52`, `moxml ~> 0.6.0` — all
|
|
30
|
+
verified against exactly those engines (2744 examples, 0 failures, 25
|
|
31
|
+
pending). Constraints live in the gemspec only; Gemfile/Gemfile.local
|
|
32
|
+
are untracked verification lanes.
|
|
33
|
+
|
|
34
|
+
|Opal lane
|
|
35
|
+
|Retired
|
|
36
|
+
|moxml 0.6 deleted the Opal surface (moxml#516), so canon's opal
|
|
37
|
+
workflow, `spec:opal` task, `:opal` group, and smoke spec are gone.
|
|
38
|
+
The `RUBY_ENGINE == "opal"` branches in lib stay for the moxml-ts wasm
|
|
39
|
+
migration (moxml#489).
|
|
40
|
+
|
|
41
|
+
|Subset-xpath mini engine (`lib/canon/xml/xpath_engine.rb`)
|
|
42
|
+
|Reported, owner decision pending
|
|
43
|
+
|It silently returns `[]` for `..` and `@attr` step forms (XPath 1.0
|
|
44
|
+
§2.2 names the owner element). No `lib/` caller uses those forms today
|
|
45
|
+
(swept 2026-10-28); decide between implementing the steps and
|
|
46
|
+
documenting/raising on unsupported forms.
|
|
43
47
|
|===
|
|
44
48
|
|
|
49
|
+
== lutaml/moxml
|
|
50
|
+
|
|
51
|
+
All three canon-filed engine issues are CLOSED by the moxml team —
|
|
52
|
+
#474 (parent-of-attribute through the Ruby engine), #472
|
|
53
|
+
(attribute-existence predicate segfault), #473 (unbounded occurrence
|
|
54
|
+
products at XSD compile). Nothing to pick up here; re-file against
|
|
55
|
+
moxml 0.6.x if the metanorma-standoc svg lanes regress.
|
|
56
|
+
|
|
45
57
|
== leptris/leptris
|
|
46
58
|
|
|
47
59
|
[cols="1,1,2"]
|
|
@@ -53,34 +65,17 @@ to epsilon-loops) instead of enumeration.
|
|
|
53
65
|
|Shipped: the adopt copy's attribute-tail resync
|
|
54
66
|
(`copy_subtree_detached`, `src/leptris/dom/element_modify.c`) and the
|
|
55
67
|
evaluator-path parent-of-attribute (`apply_axis`,
|
|
56
|
-
`src/leptris/xpath/evaluator_axes.c`).
|
|
57
|
-
`AdoptKeepsMixedPlainAndNamespacedAttrs`. Re-verify downstream crash
|
|
58
|
-
reports (moxml#472) against 1.9.385.
|
|
68
|
+
`src/leptris/xpath/evaluator_axes.c`).
|
|
59
69
|
|
|
60
|
-
|leptris#
|
|
61
|
-
|
|
62
|
-
|
|
|
63
|
-
|
|
64
|
-
|leptris#1846 — parse gap is allocator-shaped (1.0x mingw -> 4.3x old
|
|
65
|
-
Intel mac, same code)
|
|
66
|
-
|Open, slice 3 pending
|
|
67
|
-
|Allocation profile done (the issue's wave comment). ARENA
|
|
68
|
-
RIGHT-SIZING with the interleaved harness — cross-wave comparison is
|
|
69
|
-
INVALID (pugixml swung 1.7x between waves; only within-run interleaved
|
|
70
|
-
A/B counts). A counting-malloc interposer via `DYLD_INTERPOSE` beats
|
|
71
|
-
xctrace for parse loops. Prior art: `leptris-xsitype` worktree,
|
|
72
|
-
branch `perf/1846-adopt-conversion-buffer`.
|
|
73
|
-
|
|
74
|
-
|leptris#1854 — `to_xml` native emission: `FFI::Pointer#+` is 37% of
|
|
75
|
-
the loop
|
|
76
|
-
|Open
|
|
77
|
-
|An address-Integer emission API (`uintptr_t` in/out, the #408 law);
|
|
78
|
-
batch per subtree, not per node.
|
|
70
|
+
|leptris#1846/#1854/#1855 — the parse-allocator, pointer-emission, and
|
|
71
|
+
plan-path-FFI perf slices
|
|
72
|
+
|CLOSED (through v1.9.398)
|
|
73
|
+
|All three slices landed; the umbrella gap moved accordingly.
|
|
79
74
|
|
|
80
|
-
|leptris#
|
|
81
|
-
|Open
|
|
82
|
-
|
|
|
83
|
-
|
|
75
|
+
|leptris#1842 — C-face XML parse/gen/xpath vs pugixml
|
|
76
|
+
|Open (umbrella)
|
|
77
|
+
|Re-baseline against 1.9.398 with the interleaved A/B harness before
|
|
78
|
+
opening new slices — the old ~3-4x numbers predate the closed slices.
|
|
84
79
|
|===
|
|
85
80
|
|
|
86
81
|
== leptris/yeptris
|
|
@@ -121,12 +116,82 @@ has the trusted-into entries.
|
|
|
121
116
|
|===
|
|
122
117
|
|Issue |Status |Known + first moves
|
|
123
118
|
|
|
124
|
-
|yeptris-ruby#322 —
|
|
125
|
-
|
|
|
126
|
-
|The
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
119
|
+
|yeptris-ruby#322 — dump face is marshaling-bound
|
|
120
|
+
|CLOSED
|
|
121
|
+
|The marshal face shipped (4.4x end-to-end, yeptris 0.6.47/0.6.48; the
|
|
122
|
+
reader's REGISTRY LAW pinned in `test/unit/test_marshal_json.cpp`).
|
|
123
|
+
If the CBOR face reopens, copy the registry law and its pin wholesale.
|
|
124
|
+
|===
|
|
125
|
+
|
|
126
|
+
== lutaml/lutaml-model and the dependent legs
|
|
127
|
+
|
|
128
|
+
[cols="1,1,2"]
|
|
129
|
+
|===
|
|
130
|
+
|Item |Status |Known + first moves
|
|
131
|
+
|
|
132
|
+
|moxml 0.6 admission
|
|
133
|
+
|Shipped (0.8.155)
|
|
134
|
+
|`>= 0.5.139, < 0.7`; the Opal boot lane pins moxml 0.5.x locally in
|
|
135
|
+
`opal.yml` (Gemfile-append + plain `bundle update moxml` — bundler 4
|
|
136
|
+
removed `update --version`) until the moxml-ts wasm migration.
|
|
137
|
+
|
|
138
|
+
|update-baselines red on every main push
|
|
139
|
+
|PR lutaml-model#1076
|
|
140
|
+
|checkout's persisted Authorization extraheader collides with
|
|
141
|
+
create-pull-request's token ("Duplicate header: Authorization", HTTP
|
|
142
|
+
400) on the action's `git remote prune`. Fix: `persist-credentials:
|
|
143
|
+
false` on that job's checkout (the documented pairing).
|
|
144
|
+
|
|
145
|
+
|metanorma/docbook dependent leg (ubuntu/macos)
|
|
146
|
+
|PR metanorma/docbook#15
|
|
147
|
+
|ferrum 0.20 rejects `file://` at boot (`parse_base_url` is
|
|
148
|
+
http/https-only); docbook's `Capybara.app_host = "file://"` died in a
|
|
149
|
+
`before(:suite)` hook with zero examples run (windows skips the boot).
|
|
150
|
+
Fix: loopback http app_host placeholder; the specs visit absolute
|
|
151
|
+
file:// URLs directly. Same PR carries the pre-existing rubocop debt
|
|
152
|
+
that failed docbook's own rake lane (dead `custom_data` captures).
|
|
153
|
+
|
|
154
|
+
|ukiryu dependent leg (macos)
|
|
155
|
+
|Transient — resolved
|
|
156
|
+
|`bundle add lutaml-model` exit 7: the runner's rubygems compact index
|
|
157
|
+
had not propagated yeptris 0.6.53.0 (released hours earlier; the
|
|
158
|
+
version EXISTS with full platform coverage). Passed on the next
|
|
159
|
+
dependent run.
|
|
160
|
+
|
|
161
|
+
|glossarist/iev dependent legs (all OSes) + iev's own rake lane
|
|
162
|
+
|RESOLVED (2026-11-01)
|
|
163
|
+
|The republished `plurimath 0.10.0` (sha `7b870bf0...`) required
|
|
164
|
+
`mml/configuration` at line 2 — an API no mml version ships; iev's
|
|
165
|
+
silent LoadError rescue turned that into 21x
|
|
166
|
+
`uninitialized constant Plurimath::Math` (diag: glossarist/iev#75,
|
|
167
|
+
filed as plurimath/plurimath#528). Fixed by the org-wide moxml-0.6
|
|
168
|
+
update (below): plurimath 0.10.0 yanked, omml released with
|
|
169
|
+
`moxml ~> 0.6.0`, so 0.11.12 resolves again. Full iev suite green
|
|
170
|
+
(489/0) on canon 0.3.118 + moxml 0.6.1 + omml 0.2.8 +
|
|
171
|
+
lutaml-model 0.8.156. iev#75 (the diag) is revert-on-sight.
|
|
172
|
+
|
|
173
|
+
**Gotcha for any release: a YANKED VERSION NUMBER STAYS INVISIBLE to
|
|
174
|
+
bundler's resolution index even after re-pushing the same number** —
|
|
175
|
+
omml 0.2.7 published, yanked, re-pushed identically, and bundler
|
|
176
|
+
still could not see it. Always release a FRESH patch number after a
|
|
177
|
+
yank (0.2.8).
|
|
178
|
+
|
|
179
|
+
|The org-wide moxml 0.6 sweep (owner call, 2026-11-01)
|
|
180
|
+
|Shipped
|
|
181
|
+
|Every org gem now rides the moxml 0.6 line: canon 0.3.118
|
|
182
|
+
(`~> 0.6.0`), omml 0.2.8, dcc 0.2.2, metanorma-standoc 3.5.5,
|
|
183
|
+
relaton 3.0.4, expressir (admits), lutaml-model 0.8.156 (admits
|
|
184
|
+
`< 0.7`), mml (unpinned). lutaml-xsd: owner PRs #214/#215. iev's
|
|
185
|
+
suite is the executable proof: 489/0 on the resolved modern stack.
|
|
186
|
+
|
|
187
|
+
|metanorma-standoc legs: parsanol 1.3.120 removed the `mode` alias
|
|
188
|
+
|Open — relaton-chain grammar follow-up
|
|
189
|
+
|`Parsanol::PARG::ParseError: the grammar header keyword is edition;
|
|
190
|
+
mode (the pre-1.3.113 alias) was removed` fires in
|
|
191
|
+
`@bibdb.fetch_async` (relaton bibdb chain) on standoc's fresh
|
|
192
|
+
resolutions. Some grammar file still says `mode`; move it to
|
|
193
|
+
`edition "v1"` / `edition "v2"` per the parsanol message. Separate
|
|
194
|
+
from moxml entirely.
|
|
130
195
|
|===
|
|
131
196
|
|
|
132
197
|
== Mechanics every team hits
|
|
@@ -146,6 +211,12 @@ interning varies per process).
|
|
|
146
211
|
swung 1.7x between waves). Only within-run interleaved A/B on fresh
|
|
147
212
|
binaries counts. The perf gate is best-of-N per side.
|
|
148
213
|
|
|
214
|
+
|Release cuts (canon)
|
|
215
|
+
|`gh workflow run release.yml -f next_version=patch` (patch only; new
|
|
216
|
+
minors/majors are the owner's stated call). The gem bump is committed
|
|
217
|
+
by the workflow. Gemfile.lock is gitignored — CI resolves fresh from
|
|
218
|
+
the gemspec, so constraint PRs are gemspec-only.
|
|
219
|
+
|
|
149
220
|
|Release cuts (yeptris)
|
|
150
221
|
|`next_version` must be a LITERAL X.Y.Z. The release PR self-closes ~2
|
|
151
222
|
min after cut if checks never start: push a PARENTED trigger commit
|
|
@@ -165,6 +236,12 @@ its C `v<c_semver>` tag to EXIST first (platform legs vendor from it).
|
|
|
165
236
|
|The same cut/trigger/approve cycle; the Unreleased section exists on
|
|
166
237
|
main — keep it fed.
|
|
167
238
|
|
|
239
|
+
|Dependent legs (rake-with-tools)
|
|
240
|
+
|They run each downstream repo at its own main against lutaml-model's
|
|
241
|
+
branch — a red leg is usually the DOWNSTREAM repo's bug (ferrum boot,
|
|
242
|
+
stale locks), not lutaml-model's. Diagnose in the downstream repo and
|
|
243
|
+
PR there.
|
|
244
|
+
|
|
168
245
|
|Formatting
|
|
169
246
|
|The repos target clang-format 14+ (CI runs LLVM 18); local 11.1/22.1
|
|
170
247
|
both reject the config — the CI format job is the gate.
|
data/lib/canon/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: canon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.119
|
|
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
|
+
date: 2026-11-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: diff-lcs
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.9.
|
|
47
|
+
version: 1.9.401
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.9.
|
|
54
|
+
version: 1.9.401
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: moxml
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - "~>"
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 0.6.
|
|
145
|
+
version: 0.6.54
|
|
146
146
|
type: :runtime
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 0.6.
|
|
152
|
+
version: 0.6.54
|
|
153
153
|
description: |-
|
|
154
154
|
Canon provides canonicalization and pretty-printing for various serialization
|
|
155
155
|
formats (XML, HTML, JSON, YAML), producing standardized forms suitable for
|