Repository navigation
Release v2.0.0
What's Changed
- Add support for IEV shorthand parsing (v2 port) by @andrew2net in #36
- feat(iho): port IHO flavor to PubID v2 by @andrew2net in #39
- feat(itu): port i18n Annex-to-Special-Publication to v2 (#38) by @andrew2net in #44
- feat: add metadata export layer with RSpec tests by @ronaldtse in #45
- docs: add 'Adding a New Flavor to Export' guide by @ronaldtse in #46
- rename Cen flavor to CenCenelec by @ronaldtse in #47
- fix(export): website-compatible keys, full identifier coverage, Registry registration by @ronaldtse in #48
- refactor: remove all respond_to? usage and fix IEC URN parser hang by @ronaldtse in #50
- refactor: extract Builder base class + shared test templates by @ronaldtse in #51
- refactor: unify identifier + Scheme hierarchies by @ronaldtse in #52
- refactor: eliminate anti-patterns, unify hierarchies, extract Builder::Base by @ronaldtse in #53
- fix(nist): shorten VCR cassette path for Windows compatibility (rt-new-lutaml-model) by @andrew2net in #55
- fix(iso): normalize long-form DIS/FDIS draft stages and supplements by @andrew2net in #59
- feat: restore Identifier.create(**hash) factory — foundation + ISO by @andrew2net in #61
- feat(iso): build supplements + upper-case types in Identifier.create by @andrew2net in #62
- fix(nist): attach version with no leading space (match edition) by @andrew2net in #63
- fix(nist): logical equality ignores build artifacts + render trivia by @andrew2net in #64
- fix(nist): parse verbose Part N + numeric draft stages from pubs-export by @andrew2net in #65
- fix(nist): parse verbose addendum notation by @andrew2net in #66
- fix(nist): map AMS 300-8r1 + IR 8170 /upd DOI forms to their dated updates by @andrew2net in #67
- fix(nist): isolate bare supp/sup markers and normalize to single-p sup by @andrew2net in #68
- feat(render): port annotated () rendering to v2 (#71) by @andrew2net in #72
- JIS parser extensions + single-gem Rakefile rewrite by @andrew2net in #73
- Architecture improvements: dead code, autoload, renderer pattern, NIST split, self-describing types by @ronaldtse in #75
- fix(iso): derive URN document type from class, not stamped stage by @andrew2net in #76
- Refactor: deepen render interface, URN round-trip, exporter self-describing types, cleanup by @ronaldtse in #77
- Module-facade from_hash + identity for module-pattern flavors (relaton-index contract) by @andrew2net in #78
- Consolidate Code component (TODO 10) + Extract NIST Preprocessor (TODO 11) by @ronaldtse in #79
- feat(oiml): make identifiers index-ready (to_hash round-trip + 187 docids) by @andrew2net in #81
- Unify every flavor's identifier onto the class pattern by @andrew2net in #82
- Make 6 more flavors round-trip through to_hash/from_hash by @andrew2net in #83
- fix(nist): strip spurious "U" suffix + unblock Ruby 4.0 CI by @andrew2net in #84
- Remove no-op to_s overrides (TODO 13) + fix ETSI/ITU component round-trip by @ronaldtse in #86
- ci(security): add least-privilege permissions to generic-rake & rubygems-release by @andrew2net in #85
- feat(oiml): support BASE:YEAR+Supplement:YEAR joined form by @ronaldtse in #87
- fix: canonicalize to_hash so from_hash round-trips are idempotent by @andrew2net in #89
- feat(iala): add Pubid::Iala flavor by @ronaldtse in #91
- fix(iala): register Pubid::Iala autoload in lib/pubid.rb by @ronaldtse in #92
- feat(bsi): close parse gaps and add pubid-driven matching primitives by @andrew2net in #93
- feat: uniform per-flavor prefixes API for reference routing by @andrew2net in #94
- ci: run rake on every PR, not just main/master by @ronaldtse in #97
- feat(oiml): add Bulletin identifier (structured + citation forms) by @ronaldtse in #96
- fix(iala): strip leading zeros from document numbers by @ronaldtse in #98
- fix(iala): zero-pad base number to 4 digits (canonical IALA form) by @ronaldtse in #100
- feat(iala): add Advice, GeneralAssembly, Letter, Annex identifier classes by @ronaldtse in #99
- test(iso): pin ISO/R roman-letter alphabetic part parsing (#56 behavior) by @andrew2net in #101
- chore: remove v1 monorepo cruft ahead of v2-as-main rename by @andrew2net in #102
- feat(nist): add RB, CHIPS, and NWIRP series by @andrew2net in #103
- PubID v2: New implementation native to lutaml-model by @ronaldtse in #19
- fix(ieee): fix genuine round-trip mismatches, restore honest reporting (#32) by @andrew2net in #104
- feat(ogc): add OGC (Open Geospatial Consortium) flavor by @andrew2net in #109
- feat(adobe): re-apply Pubid::Adobe flavor on main by @ronaldtse in #114
- feat(gost): re-apply Pubid::Gost flavor on main by @ronaldtse in #115
- feat(easc): re-apply Pubid::Easc flavor on main by @ronaldtse in #116
- fix(iala,oiml): re-apply URN round-trip + per-type padding on main by @ronaldtse in #117
- feat(w3c): add W3C flavor by @andrew2net in #110
- feat(xsf): add XSF (XEP) flavor by @andrew2net in #111
- feat(jcgm): add committee/meeting identifier type by @andrew2net in #119
- feat(3gpp): add Pubid::Tgpp flavor for 3GPP TR/TS identifiers by @andrew2net in #113
- feat(bipm): add Pubid::Bipm flavor for BIPM identifiers by @andrew2net in #120
- feat(iana): add IANA protocol-registry flavor by @andrew2net in #121
- feat(oasis): add Pubid::Oasis flavor for OASIS identifiers by @andrew2net in #123
- feat(ecma): add ECMA flavor by @andrew2net in #118
- feat(ietf): add Pubid::Ietf flavor for RFC, BCP/STD/FYI and Internet-Drafts by @andrew2net in #122
- feat(gost): add Harmonized identifier and cross-flavor type resolution by @ronaldtse in #124
- feat(calconnect): add Pubid::Calconnect flavor by @andrew2net in #127
- feat(jcgm): parse bare GUM/VIM-3 guides and the Corrigendum suffix by @andrew2net in #126
- feat(oiml): uniform Pubid::::Identifier.parse interface by @andrew2net in #125
- refactor(jcgm): flatten to_hash to compact ISO/OIML shape by @andrew2net in #128
- refactor(etsi): flatten to_hash to compact ISO/JCGM shape by @andrew2net in #129
- feat(etsi): parse partial references with optional version/date by @andrew2net in #130
- feat(etsi): propagate ParseFailed and support part exclusion by @andrew2net in #132
- feat(calconnect): parse partial references with optional date by @andrew2net in #133
- feat(bipm): parse partial references with optional trailing date by @andrew2net in #131
- fix(ci): make downstream-test use this PR's local pubid by @andrew2net in #136
- feat(cie): parse partial references with optional trailing year by @andrew2net in #135
- feat(csa): parse partial references with optional trailing year by @andrew2net in #134
- feat(cie): proceedings/D-series/TS grammar + compact index shape by @andrew2net in #137
- refactor!: rename base_identifier to base; make #root reach origin for every flavor by @andrew2net in #139
- feat(iso,iec): parse undated references (:-- and :—) by @ronaldtse in #140
- feat(cie): give every identifier a non-empty root.number for relaton-index by @andrew2net in #141
- feat: make to_mr_string lossless across every flavor (#142) by @ronaldtse in #143
- feat: make to_mr_string all-lowercase and filename-safe; add to_slug by @ronaldtse in #144
- feat(ashrae): parse partial references (bare ASHRAE
) by @andrew2net in #262 - feat(jcgm): parse partial references with an optional date by @andrew2net in #261
- feat(nist): parse long notation references (Rev.1, Part.1) by @ronaldtse in #253
- feat(itu): parse edition suffixes bis / ter / quater by @ronaldtse in #254
- feat(itu): parse errata (Err.) including chained-on-amendment/corrigendum by @ronaldtse in #255
- fix(iec): normalize IECEE TRF semicolon and route module parse through UpdateCodes by @ronaldtse in #257
- feat(iec): parse technical group identifiers (TC, JTC, SC, PC, CISPR, CIS) by @ronaldtse in #258
- feat(nist): parse "NIST Research Library (YYYY)" one-off identifier by @ronaldtse in #259
- feat(nist): normalize "Monograph" long-form series name to MONO by @ronaldtse in #260
- feat(itu): parse Implementers' Guide identifiers (G.Imp712, X.ImpOSI) by @ronaldtse in #256
- feat(nist): parse long-form Vol. prefix and strip citation-form commas by @ronaldtse in #263
- feat(ieee): mirror /Cor rule's separator flexibility for /Amd by @ronaldtse in #264
- feat(cen_cenelec): implicit IEC adoption by number range (60000-79999) by @ronaldtse in #265
- test: add registry-driven partial-reference parsing guard spec by @andrew2net in #266
- feat(itu): accept "Recommendation " long-form prefix by @ronaldtse in #267
- refactor: unify per-flavor handle on Pubid::::Identifier by @andrew2net in #268
- feat(plateau): parse legacy Latin references, normalizing to canonical by @andrew2net in #269
- feat(itu): parse common-text identifiers (Recommendation ITU-T X | ISO/IEC Y) by @ronaldtse in #270
- feat(bsi): expose Annex F series taxonomy (automotive/aerospace/marine) by @ronaldtse in #271
- fix(ieee): correct ISO/IEC DIS P26511.2 normalization (no phantom part 2) by @ronaldtse in #272
- feat(ieee): default draft version to 1 for Draft-type identifiers by @ronaldtse in #273
- fix(ieee): correct rendering of co-published identifiers by @ronaldtse in #274
- fix(ieee): parse IEC-led dual form with colon-year on IEC number by @ronaldtse in #275
- feat(gb): add Pubid::Gb flavor for Chinese Standard identifiers by @ronaldtse in #276
- feat(omg): add Pubid::Omg flavor for OMG specifications by @ronaldtse in #277
- feat(un): add Pubid::Un flavor for UN document identifiers by @ronaldtse in #278
- feat(doi): add Pubid::Doi flavor for Digital Object Identifiers by @ronaldtse in #279
- feat(isbn): add Pubid::Isbn flavor with check-digit validation by @ronaldtse in #280
- fix(ieee): normalize "IEEE Unapproved Draft Std P15289, 06" via update_codes by @ronaldtse in #281
- feat(itu): model Questions and Handbooks; flat to_hash; N-way combined by @andrew2net in #287
- feat(nist): complete series abbreviation coverage (all 49 codes) by @ronaldtse in #282
- feat(iec): register all missing IEC stage abbreviations by @ronaldtse in #284
- feat(core): add relational algebra predicates on Pubid::Identifier by @ronaldtse in #285
- refactor: replace require_relative with autoload across all flavors by @ronaldtse in #286
- feat(cen_cenelec): register all CEN PROJEX stage codes by @ronaldtse in #283
- fix(nist): parse doubled prefix and year-only CIRC series supplement (#152) by @andrew2net in #288
- fix(itu): #matches?/#exclude raise ArgumentError under Ruby 3 kwargs (#289) by @andrew2net in #290
- fix(ieee): drop "Std" from unapproved draft identifiers (#209) by @ronaldtse in #291
- fix(ieee): split multi-relationship parentheticals (#222) by @ronaldtse in #292
- feat(nist): expose SP subseries as a queryable attribute (#161) by @ronaldtse in #293
- feat(ieee): index-friendly serialization for relaton index-v2 by @andrew2net in #294
- refactor(nist): compact to_hash and consolidate edition/revision by @andrew2net in #295
- fix(gost): make exclude(:year) drop a plain year attribute by @andrew2net in #296
- feat(ieee): combined index-v2 coverage (S-135, AIEE, ISO stages, redline, draft, revisions, edition, ANS) by @andrew2net in #297
- fix(ieee): stop double-capturing :year (Parslet "Duplicate subtrees" warning) by @andrew2net in #299
- fix(ieee): accept trademark: kwarg on all leaf to_s overrides by @andrew2net in #300
- fix(ieee): stop edition year double-capturing :year (Parslet "Duplicate subtrees") by @andrew2net in #301
- fix(ieee): keep the amendment/relationship narrative out of to_s by @andrew2net in #302
- fix(ieee): attach + serialize the /Amd N-YYYY amendment (was silently dropped) by @andrew2net in #303
- fix(ieee): close 3 draft-parsing gaps (~700 index-v2 drafts recovered) by @andrew2net in #304
- fix(ieee): AdoptedStandard round-trips (drop derived publisher from to_hash) by @andrew2net in #305
- feat(bipm): add update_codes normalization + first-class CIPM 2005-06 by @andrew2net in #306
- fix(ieee): normalize 29 /D- corrupted draft docids via update_codes by @andrew2net in #307
- fix(ieee): accept cross-flavor adopted ids in AdoptedStandard#to_hash by @andrew2net in #309
- fix(ieee): parse embedded stage-last ISO form NNNNN.part.STAGE by @andrew2net in #311
- get 21 missing SI-brochure-family IDs by @andrew2net in #313
- extend pubid to the full form by @andrew2net in #314
- fix(ieee): parse trailing numeric-month dates and bare-number/corrigendum drafts by @andrew2net in #315
- fix(ieee): reparent IRE and NESC identifiers onto Pubid::Ieee::Identifier by @andrew2net in #319
- feat(itu): parse (V##) versions and labelled annexes, fix supplement equality by @andrew2net in #320
- fix(itu): render amendments as "Amd." to match ITU and the sibling types by @andrew2net in #321
- fix(ieee): attach trademark symbol to the document number by @andrew2net in #323
- feat(itu): parse the 668 unindexable ITU-T print forms by @andrew2net in #325
- fix(jcgm): support /Cor N:YYYY numbered corrigenda + rename iteration→number by @ronaldtse in #298
- fix(ieee): attach the trademark to the number for IEC/IEEE copublished by @andrew2net in #326
- feat(itu): add Report identifier type for ITU-R Reports by @andrew2net in #327
- ci(release): fail fast on bad RubyGems credentials and published versions by @ronaldtse in #328
- ci(release): push to RubyGems via trusted publishing (OIDC) by @ronaldtse in #329
- ci(release): register release-v1.yml on main so it is dispatchable by @ronaldtse in #331
- ci(release): configure trusted publishing via configure-rubygems-credentials by @ronaldtse in #333
- feat(ietf): make Pubid::Ietf ready for the unified relaton IETF index by @andrew2net in #336
- feat(iana): give IANA identifiers a non-empty index key (root.number) by @andrew2net in #337
- feat(bipm): index key (root.number), MR slug, and the loose reference forms by @andrew2net in #338
- feat(w3c): rename the slug attribute
codetonumber(index key) by @andrew2net in #339 - feat(3gpp): make the version segment optional (bare reference parse) by @andrew2net in #343
- fix(csa): non-empty root.number, real container types, raise-never-nil by @andrew2net in #344
- fix(3gpp): let Parslet::ParseFailed propagate out of Identifier.parse by @andrew2net in #345
- fix(3gpp): initialize parts to [] so parse and from_hash compare equal by @andrew2net in #346
- fix(etsi,oiml): non-empty root.number from flat leaf code columns by @andrew2net in #347
- fix(amca,asme,astm): non-empty root.number, and the MR slug that went with it by @andrew2net in #348
- fix(jcgm): make the meeting year optional and read URNs back losslessly by @andrew2net in #349
- fix(csa): revive the dead fixture round-trip spec and refresh its corpus by @andrew2net in #350
- fix(jcgm): make from_hash(to_hash) equal the parsed identifier by @andrew2net in #351
- fix(ashrae): recover 489 dropped numbers, give ASHRAE an index key and an MR slug by @andrew2net in #352
- fix(ashrae): sweep the real fixture corpus, and correct the counts it inflated by @andrew2net in #353
- fix(iec): make from_hash(to_hash) equal the parsed identifier by @andrew2net in #355
- fix(api,bsi,cen,ieee): give wrappers an index key, and the identity that goes with it by @andrew2net in #354
- refactor(number): retype number/part/subpart to :string (tranche 1) by @andrew2net in #356
- docs: move the flavor notes out of the root CLAUDE.md by @andrew2net in #358
- feat(ecma): parse, carry and render edition and volume by @andrew2net in #357
- fix(oasis): give OASIS an index key, an MR slug and partial-ref matching by @andrew2net in #359
- fix: give every flavor one parse-failure contract by @andrew2net in #361
- chore: link the json pin to its tracking issue by @andrew2net in #364
- fix(iec): give PNW its own stage, print a space, build the URN from components by @andrew2net in #362
- feat: close pubid#360 items 3, 5 and 6 (attribute path, stage lookup, annotated rendering, prefix routing) by @andrew2net in #365
- feat: give pubid its own error namespace, unified by a marker module by @andrew2net in #366
- feat: annotate every identifier type that renders its own string by @andrew2net in #367
- fix: coerce a scalar into a degenerate component collection by @andrew2net in #368
- refactor: hold IEC number/part/subpart as plain strings by @andrew2net in #369
- feat(xsf): accept the two named XEP documents (XEP README, XEP xxxx) by @andrew2net in #370
- fix(cen_cenelec): repair the CEN contract that relaton needs by @andrew2net in #371
- feat(omg): add a document part, and accept a bare beta by @andrew2net in #372
- fix(ieee): default copublisher to an empty collection by @andrew2net in #373
- feat: add Pubid.from_hash, the hash counterpart of Pubid.parse by @andrew2net in #375
- chore: remove the archived-gems folder by @andrew2net in #374
- fix(omg): accept every acronym in the OMG catalog by @andrew2net in #376
- Version: continue the 2.0.0.pre.alpha series (2.0.0.pre.alpha.10) by @ronaldtse in #380
- Flavor entry files require the pubid umbrella (fix standalone require) by @ronaldtse in #381
- SSOT foundations: scheme schema, conformance corpus, extraction task by @ronaldtse in #335
- Add EVS flavor (Estonian national adoptions of European Standards) by @ronaldtse in #378
- CI: drop the testsuite ref pin - the corpus is on main by @ronaldtse in #385
- Route MRN URNs by assigning authority; parse URNs at the IALA entry point by @ronaldtse in #384
- Style pass on the conformance layer by @ronaldtse in #386
- Store the OIML Bulletin issue as number by @andrew2net in #387
- Serialize the GB year and parse the GBn prefix by @andrew2net in #388
- from_hash: Type-instance defaults replace raw Symbol defaults by @ronaldtse in #390
- EVS: the uniform base accessor, and a behavioural guard for raw component defaults by @andrew2net in #389
- Declare number/part/subpart as :string everywhere; drop Components::Code from the identifier path by @andrew2net in #397
- ieee: stage-less joint published form (#317) + unapproved-draft render idempotence (#318) by @ronaldtse in #391
- Remove the temporary json < 3 pin (lutaml-model#767 shipped) by @ronaldtse in #392
- itu: model the Contribution (Temporary Document) type by @ronaldtse in #393
- nist: lock minor-version round-trips (#170) by @ronaldtse in #394
- oiml: accept the VIM's paren-year date shape by @ronaldtse in #395
- docs: registry-driven pattern generation + refreshed identifier-patterns reference by @ronaldtse in #396
- docs: regenerate patterns for the merged types by @ronaldtse in #398
- refactor(bsi)!: hold the adopted document in
base; name supplement fieldsnumber/yearby @andrew2net in #400 - oiml fixtures: punctuation-space variance as printed in the wild by @ronaldtse in #401
- oiml parser: tolerate space before the year colon by @ronaldtse in #403
- Measure the CLAUDE.md budget LF-normalized by @ronaldtse in #404
- feat: add
===, a subset match for a partial reference by @andrew2net in #402 - fix(ashrae): capture the errata date, so two errata are two identifiers by @andrew2net in #405
- refactor(ashrae)!: hold the errata date in the inherited
datecomponent by @andrew2net in #406 - feat: let a nil component mean "none" in
===by @andrew2net in #408 - downstream-test: per-repo continue-on-error flag; mark relaton experimental (fixes #409) by @ronaldtse in #410
- feat(ccsds): let a nil suffix mean the current document in
===by @andrew2net in #412 - fix(ashrae): parse an interpretation as an
Interpretationby @andrew2net in #411 - fix(ashrae): give each supplement its own URN by @andrew2net in #413
- fix(asme,amca): keep the BPVC year, the AMCA revision and a real URN by @andrew2net in #414
- cen_cenelec: parse the compact fragment spelling (EN 60038/A1 FRAG2) by @ronaldtse in #416
- iso: guide-first spellings select the Guide class; stop doubling the supplement month by @ronaldtse in #417
- astm: accept the dashed subseries after a letter suffix (DS55S-S1) by @ronaldtse in #418
- asme: parse the catalogue alternate spellings; flavor is clean by @ronaldtse in #419
- csa: space the CEC reaffirmation by the printed year; adopt the bare IWA spelling by @ronaldtse in #420
- nist: parse the legacy catalogue spellings; flavor is clean by @ronaldtse in #421
- bsi: parse the addendum render's double space by @ronaldtse in #422
- bsi: stop the deserialize round-trip regrowing the borrowed publisher by @ronaldtse in #424
- ieee: parse the printed joint forms and the catalogue draft conventions by @ronaldtse in #425
- ci: update actions/checkout to v7 by @ronaldtse in #426
- feat: add
Identifier#to_all_partsby @andrew2net in #415 - docs: define the IEEE draft-stage conventions (native, joint, compound) by @ronaldtse in #431
- ieee: joint stage-draft URN segments and the gem-side draft fixtures by @ronaldtse in #432
- ci: replace the deprecated create-release action and bump codecov by @ronaldtse in #429
- feat: make "all parts" a class, not a flag by @andrew2net in #433
- fix(asme,amca): regenerate the fixtures for the catalogue-spelling repair by @ronaldtse in #434
- ieee: strip the ISO-led draft P only while the typed stage is a draft by @ronaldtse in #428
- ieee: parse the rawbib joint-draft spellings faithfully by @ronaldtse in #436
- fix: cover flavor-specific discriminators in all_parts_edition_keys by @andrew2net in #438
- ieee: the glued-WD drafts are stage drafts; the '(E) ANSI/IEEE Std' tail is a second label by @ronaldtse in #439
- ieee: the (E) marker sits between year and amendment tail; only markers print by @ronaldtse in #440
- oiml: support OIML/ISO dual-published identifiers by @andrew2net in #441
- ieee: regenerate the fixtures after the edition-marker fixes by @ronaldtse in #442
- fix: make Components::Date#hash and #eql? public by @andrew2net in #443
- fix(oiml): make language, subpart and annex letter strict in === by @andrew2net in #444
- ieee: the 8802 family row is a double-labeled standard too by @ronaldtse in #445
- All parts in every flavor: shared Grammar strips the suffix, every Builder wraps by @ronaldtse in #446
- Audit follow-up: OASIS keeps the printed slug, ANSI routes the all-parts marker by @ronaldtse in #447
- All-parts spec covers every flavor; AllPartsWrap reads array-top trees by @ronaldtse in #448
- OIML estate parity: CS family, language words, strict letters, trailing ordinal by @ronaldtse in #452
- Resolve document identity through wrappers in the relation algebra (#449) by @ronaldtse in #451
- fix: stop #exclude(:date)/#exclude(:year) from dropping a supplement's own date by @andrew2net in #450
- fix plateau annex supplements: construction, serialization, URN by @ronaldtse in #453
- fix: force UTF-8 default external encoding in spec_helper by @andrew2net in #454
- fix: route GOST foreign adoptions with slash-attached type prefixes deterministically by @andrew2net in #455
- Add local .env support for PUBID_TESTSUITE_PATH; fix duplicate hash key; move flavor docs into lib/pubid by @andrew2net in #456
- fix nist canonical shapes: series-only supplement, dotted series edition by @ronaldtse in #457
- Correct the stale nist classifier directives (C4/C5) by @ronaldtse in #459
- ieee: restore draft dates on IEC/IEEE-led D+stage drafts by @ronaldtse in #458
- ITU: parse the forms relaton needs (RR, OB sector, publication ids, -YYYYMM) by @andrew2net in #460
- nist: rebuild the NBS-published CSM series under its own imprint by @ronaldtse in #461
- pg: load artifacts through Parsanol::PARG by @andrew2net in #466
- Joint ISO/IEC identifiers: one canonical key, lead-first routing, stricter detection by @andrew2net in #467
- IEEE: classify copublished print tails (C3) by @ronaldtse in #468
- Revert "routing: one key for joint ISO/IEC identifiers, stricter detection" (#467) by @ronaldtse in #470
- PG campaign: remaining flavor swaps + PARG rename by @ronaldtse in #462
- ieee: rebaked artifact + verbatim part joins in the builder by @ronaldtse in #473
- ieee: joint stage-tracked drafts — IEEE face D=STAGE-YYYY, ISO face bare (pubid#469) by @ronaldtse in #472
- sync: PARG artifacts re-baked from pubid-grammar main by @ronaldtse in #474
- gemspec: declare the parsanol runtime dependency by @ronaldtse in #475
- Package the data/parg grammar artifacts in the gem by @ronaldtse in #476
- routing: only a prefix owner may supply the non-exact fallback by @ronaldtse in #479
- IEEE joint: stage-word rows keep their face and iteration (#477) by @ronaldtse in #481
- ieee: joint stage-first ids round-trip again; lossless ISO face (pubid#477) — rebased by @ronaldtse in #482
- ieee: CDV/V3 dialect parses; drop its shim; engine floor 1.3.62 by @ronaldtse in #483
- ieee: bare-IEEE ISO-stage drafts render the D= designator face (pubid#203) by @ronaldtse in #484
- ieee: keep the IEC /V-iteration on the stage word by @ronaldtse in #485
- downstream: make the relaton legs required again (#409) by @ronaldtse in #486
- Perf: memoize polymorphic_name; allocation-free alias folds by @ronaldtse in #487
- ieee: drop the joint-dialect shims the grammar now owns by @ronaldtse in #489
- ieee: drop normalize_joint_stage_spellings - the grammar owns it all by @ronaldtse in #490
- iec: CEI publisher alias; house-style language join by @ronaldtse in #492
- ieee: drop normalize_revision_notation and normalize_relaton_suffixes by @ronaldtse in #493
- ieee: drop the glued-month, year-dash and P&V gsub shims by @ronaldtse in #494
- Mirror Pubid::FormatRegistry into Lutaml::Model::FormatRegistry (L8) by @ronaldtse in #495
- Add the ISO grammar pilot: artifact -> lutaml-model hydration (G4) by @ronaldtse in #496
- NIST: render section, indx, standalone issue, parenthesised translation by @ronaldtse in #498
- iec: sync the PARG artifact to the merged grammar (CEI alias, dash language join) by @ronaldtse in #501
- ieee: the D= designator face, the C2 canonicals, and the draft-date round-trip by @ronaldtse in #502
- ieee: the C2 alias regroup - a draft's type word is Draft alone by @ronaldtse in #504
- NIST: full-style composition — series full names, part/supplement/section/index words, single edition render by @ronaldtse in #499
- ieee: a year-only draft date renders instead of dropping by @ronaldtse in #505
- ieee: the base year of a dated-draft family dash-attaches to the code by @ronaldtse in #506
- nesc: the name-first Redline variant parses as the Redline it is by @ronaldtse in #507
- ieee: the year-only draft date canonicalizes on its comma form by @ronaldtse in #508
- nist: edition ids accept a dotted minor (pubid#170) by @ronaldtse in #509
- ieee: joint ISO-print Redline and Cor.n:YYYY tails (pubid#215) by @ronaldtse in #510
- ieee: fixture lines for the joint Redline and Cor rows (pubid#215) by @ronaldtse in #511
- ieee: drop the resolved Redline/Cor lines from the fail fixtures (pubid#215) by @ronaldtse in #512
- ieee: fixture twins for the Cor.2 residual row (pubid#215) by @ronaldtse in #513
- Floor lutaml-model ~> 0.8 by @ronaldtse in #514
- ieee: parse NESC Preprint as a draft stage by @ronaldtse in #515
- ieee: fixture twins for the resolved #211 tail negatives by @ronaldtse in #516
- ieee: the fixture re-derive (classify regen after the drift window) by @ronaldtse in #518
- ieee: corrigendum narrative bases fold their sequence subtree by @ronaldtse in #519
- Preserve glued identity year-month provenance (pubid#517) by @ronaldtse in #520
- evs: the EVS prefix, supplement and language list (gap wave) by @ronaldtse in #522
- evs/cen: the ETSI forms, the version suffix, the TS face and the EN-TR rejection by @ronaldtse in #524
- ieee: a draft's numeric date embeds in the designator by @ronaldtse in #523
- ieee: the lettered REV is identity and keeps its separator; REV drafts embed their date by @ronaldtse in #525
- ieee: draft dates accept the 2-digit catalogue years (debt D1) by @ronaldtse in #527
- ieee: the revision-relationship target models as an identifier by @ronaldtse in #528
- ieee: the corrigendum drafts join the house order with the glued -yyyy-mm date by @ronaldtse in #529
- ieee: drop the fail fixtures the recent waves now parse (101 stale negatives) by @ronaldtse in #530
- ieee: sync the cor-route artifact (missed from the wave-1 gem commit) by @ronaldtse in #531
- ieee: drop the cor-first fail twins the artifact sync now parses by @ronaldtse in #532
- ieee: the joint IEEE/CSA drafts glue their -yyyy-mm date by @ronaldtse in #533
- ieee: the glued CSA draft face re-parses onto the draft date by @ronaldtse in #534
- ieee: the iso-led rows reclassify to the negative fixtures by @ronaldtse in #535
- ieee: the narrative negative twins reclassify their raw lines by @ronaldtse in #536
- ieee: the remaining negative-pinned twins reclassify their raw lines by @ronaldtse in #537
- ieee: the joint lists drop the Draft word on the D= tails and collapse the doubled slash by @ronaldtse in #538
- errors.rb: drop the circular require of the pubid umbrella (windows load crash) by @ronaldtse in #539
- nist: from_hash collapses the legacy component-era hash numbers by @ronaldtse in #541
- ieee: the lettered REV spellings normalize at the number boundary by @ronaldtse in #542
- ieee: the IEEE-led tail word-stage composes the D= face by @ronaldtse in #543
- rebake: the tail word-stage drops the negative space predicate by @ronaldtse in #544
- rebake: the tail word-stage drops the negative space predicate by @ronaldtse in #545
- rebake: the tail word-stage drops the negative space predicate (grammar#40) by @ronaldtse in #546
- artifacts: sync all 47 flavors with the grammar eef2795 contracts by @ronaldtse in #547
- ieee: the joint face is lossless (the parenthetical always prints) by @ronaldtse in #549
- omg: the glued catalogue beta label classifies into the version (pubid#548) by @ronaldtse in #550
- ieee: the glued month-name stage-date rides the D= designator by @ronaldtse in #551
- ieee: the DIS iteration date rides the D= face; padded designators shed their zero by @ronaldtse in #552
- nist: the capitalized Suppl spelling and the dotted revision fold to their canonical faces by @ronaldtse in #553
- ieee: the D= designator re-parses in every rendered form by @ronaldtse in #556
- ieee: the joint dash/underscore stage aliases re-spell as their D= face by @ronaldtse in #559
- ieee: the catalogue alias re-spells (track 01 wave 2c) by @ronaldtse in #560
- ieee: the draft-stage ladder takes the fabricated D1 and stage-token versions (track 01 wave 2d) by @ronaldtse in #561
- nist: rebuild the dot-joined URN payload's part letter, edition text and markers by @ronaldtse in #562
- algebra: add revision_of? and stop routing predicates through matches? by @ronaldtse in #563
- parser: load the shared error namespace through autoload by @ronaldtse in #565
- parg: gate every shipped artifact on its freshness envelope by @ronaldtse in #566
- benchmark: a full-corpus throughput baseline per release by @ronaldtse in #567
- nist: the FIPS machine-readable render keeps the parsed publisher by @andrew2net in #564
- iso: attach supplement-family stages and bare languages to the right node by @ronaldtse in #569
- iso: the harmonized-code stage lookup prefers the IS family by @ronaldtse in #570
- iec: every stage abbreviation in #237 resolves — sourced aliases + the stage-code SSOT by @ronaldtse in #571
- jcgm: accept the dotted Amd/Cor supplement spellings BIPM prints by @ronaldtse in #574
- iec: document the stage-code SSOT in the flavor notes by @ronaldtse in #575
- iec: the stage-code reconciliation round — every SSOT row queryable by @ronaldtse in #578
- docs: the generated API reference (YARD over lib/) by @ronaldtse in #579
- Normalize the NIST index suffix to its long form by @ronaldtse in #584
- Parse the NIST n+UPPER annex suffix (BH/HR/NCSTAR/SP) by @ronaldtse in #585
- iso: the bare TC document reference parses (pubid-iso#285) by @ronaldtse in #583
- nist: the number suffix must not consume the n+UPPER annex token by @ronaldtse in #586
- iso: the RFC 5141-bis additive extension; from_urn wired; one URN render path by @ronaldtse in #587
- iso: the guide supplement chain builds the generic Supplement; the docnumber guard by @ronaldtse in #588
- docs: fix the URN spec tables asciidoctor drops cells from by @ronaldtse in #589
- ieee: the D= designator restores verbatim from the published hash by @ronaldtse in #590
- routing: the two-party IEEE joint prefixes route to their owners by @ronaldtse in #591
- ieee: the printed joint face strips the ordinal draft and surfaces its date by @ronaldtse in #592
- ieee: the two-party P+draft rows take the joint/project-draft family by @ronaldtse in #593
- renderers: honor nil typed_stage in the supplement renderer by @ronaldtse in #594
- ieee: the draft faces the ruling produces round-trip by @ronaldtse in #595
- ieee: converge the draft wire form and materialize the runtime components after from_hash by @ronaldtse in #598
- iec: remove the hallucinated AWG/CANV stage codes from the record by @ronaldtse in #599
- ieee: the joint /D rows take the Draft word and the P project marker (pubid#597) by @ronaldtse in #602
- Route non-human to_s formats through the format registry by @ronaldtse in #603
- ieee: the Draft component converges on every construction path (pubid#601) by @ronaldtse in #604
- ieee: the glued stage-month tails decode onto the D= designator (pubid#600) by @ronaldtse in #605
- algebra: wrapped_edition_of? resolves a wrapped record of a named edition (pubid#580) by @ronaldtse in #606
- iec: the consolidated base_document peel is recursive (pubid#580 doctrine) by @ronaldtse in #607
- iec: the SPE stage abbreviation on International Standards by @ronaldtse in #609
Full Changelog: v1.15.12...v2.0.0
Corpus throughput
flavor cases failed seconds parses/sec
ietf 2526 0 0.241 10489.4
xsf 51 0 0.005 10222.8
ecma 833 0 0.083 10032.0
ogc 88 0 0.009 9516.8
iala 702 0 0.092 7618.3
easc 167 0 0.023 7316.9
jis 10555 0 1.502 7028.6
calconnect 189 0 0.027 6957.8
iana 30 0 0.004 6794.1
oasis 45 0 0.007 6610.2
api 193 0 0.031 6191.5
plateau 115 0 0.019 6109.6
ccsds 490 0 0.082 5948.3
ansi 175 0 0.030 5765.2
omg 21 0 0.004 5095.0
asme 727 0 0.149 4870.7
etsi 24724 0 5.277 4685.2
astm 248 0 0.059 4214.4
tgpp 32 0 0.009 3740.9
cie 365 0 0.104 3513.9
cen_cenelec 189 0 0.059 3210.2
ashrae 2178 0 0.691 3150.3
itu 2752 0 0.931 2956.0
iso 7630 0 2.944 2591.8
w3c 29 0 0.011 2556.2
un 4 0 0.002 2161.8
csa 830 0 0.405 2051.9
iho 131 0 0.065 2014.5
bipm 90 0 0.047 1933.0
jcgm 31 0 0.018 1756.0
gb 10 0 0.006 1622.1
isbn 3 0 0.002 1560.8
oiml 90 0 0.059 1520.6
bsi 1500 0 1.049 1429.6
idf 65 0 0.046 1410.7
evs 35 0 0.028 1250.7
iec 12334 0 10.162 1213.7
amca 39 0 0.046 855.5
doi 3 0 0.005 660.1
ieee 9389 0 17.634 532.4
nist 19818 0 89.232 222.1
gost 199 0 1.113 178.7
TOTAL 99625 132.312 753.0
ruby 3.3.13; parsanol 1.3.109; pubid 2.0.0
Migration notes for index builders (relaton)
The per-flavor identifier base namespaces were removed in this release by the flavor-handle unification (#268): Pubid::<Flavor>::Identifiers::Base no longer exists. Every flavor now unifies on Pubid::<Flavor>::Identifier (e.g. Pubid::Iho::Identifier) — that constant is:
- the deserialization root to pass as
pubid_class: to index builders (Relaton::Index and the fetchers),
- the type to key
is_a? serialization checks on,
- the
from_hash / _type: dispatch entry (works for module-pattern flavors too).
Naming the removed constants raises NameError at index load, and serializing against them produces empty id hashes. The relaton repos pin the canonical handles with regression guards (relaton-iho-keys pubid_identifier_spec.rb).