@instruments/taxonomy 1.13.0 → 2.0.0

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.
package/dist/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ // src/assessment-policy.ts
2
+ import { createHash as createHash2 } from "crypto";
3
+
1
4
  // src/v1.ts
2
5
  import { createHash } from "crypto";
3
6
 
@@ -535,7 +538,7 @@ var CONSTRUCTION_TERMS = [
535
538
  term(
536
539
  "encaustic",
537
540
  "Encaustic",
538
- "Made with colour or decoration integral to the body or inlaid beneath the wearing surface."
541
+ "Made with color or decoration integral to the body or inlaid beneath the wearing surface."
539
542
  ),
540
543
  // Beneath `encaustic`: a hydraulically pressed cement tile carries its pigment layer beneath the
541
544
  // wearing surface, which is what `encaustic` means here, so it is a narrower construction and
@@ -543,7 +546,7 @@ var CONSTRUCTION_TERMS = [
543
546
  reviewed(
544
547
  "cement-tile",
545
548
  "Cement tile",
546
- "A tile of pigmented cement pressed hydraulically and cured without firing, its colour layer integral beneath the wearing surface.",
549
+ "A tile of pigmented cement pressed hydraulically and cured without firing, its color layer integral beneath the wearing surface.",
547
550
  wikidata("Q3700458", "cement tile"),
548
551
  {
549
552
  altLabels: ["hydraulic tile"],
@@ -661,12 +664,12 @@ var CONSTRUCTION_TERMS = [
661
664
  term(
662
665
  "through-body",
663
666
  "Through body",
664
- "Colour and composition continue through the full thickness rather than sitting only on the face."
667
+ "Color and composition continue through the full thickness rather than sitting only on the face."
665
668
  ),
666
669
  reviewed(
667
670
  "zellige",
668
671
  "Zellige",
669
- "Hand-cut and hand-glazed clay tile in the Moroccan tradition, with the irregular surface and edge that method leaves; it does not name a colour, size or layout.",
672
+ "Hand-cut and hand-glazed clay tile in the Moroccan tradition, with the irregular surface and edge that method leaves; it does not name a color, size or layout.",
670
673
  wikidata("Q189046", "zellij"),
671
674
  { altLabels: ["zellij", "zillij"] }
672
675
  ),
@@ -682,7 +685,7 @@ var CONSTRUCTION_TERMS = [
682
685
  wikidata("Q243519", "velvet")
683
686
  ),
684
687
  // Lowercase ASCII slug so the phrase resolves without the diacritic; the accented spelling is a
685
- // wild form rather than the label, so both readings reach one term.
688
+ // wild form rather than the label, so both meanings reach one term.
686
689
  reviewed(
687
690
  "boucle",
688
691
  "Boucle",
@@ -730,7 +733,7 @@ var CONSTRUCTION_TERMS = [
730
733
  reviewedTax57(
731
734
  "tweed",
732
735
  "Tweed",
733
- "A rough-surfaced woven fabric made from mixed-colour yarns, traditionally wool.",
736
+ "A rough-surfaced woven fabric made from mixed-color yarns, traditionally wool.",
734
737
  wikidata("Q40601", "tweed"),
735
738
  { broaderSlug: "woven" }
736
739
  ),
@@ -1436,7 +1439,7 @@ var ELEMENT_TERMS = [
1436
1439
  ];
1437
1440
 
1438
1441
  // src/crossover-sources.ts
1439
- var RETRIEVAL_LEXICON_SOURCE = "colour-material lexicon in a materials-retrieval system (src-05)";
1442
+ var RETRIEVAL_LEXICON_SOURCE = "color-material lexicon in a materials-retrieval system (src-05)";
1440
1443
  var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@5feb29b267a7954c135976ede8039f37121afd27:packages/core/data/reference/v1/taxonomy.json";
1441
1444
  var BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
1442
1445
  var BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
@@ -1718,7 +1721,7 @@ var FINISH_TREATMENT_TERMS = [
1718
1721
  mg2435(
1719
1722
  "antiqued",
1720
1723
  "Antiqued",
1721
- "Deliberately finished to give a new surface the look of age, by wear, colour change or patination; the term names the result, not one process.",
1724
+ "Deliberately finished to give a new surface the look of age, by wear, color change or patination; the term names the result, not one process.",
1722
1725
  {
1723
1726
  note: "Widened 2026-10-02: the definition no longer lists the processes, and covers any means of giving the look of age."
1724
1727
  }
@@ -1800,10 +1803,10 @@ var FINISH_TEXTURE_TERMS = [
1800
1803
  ),
1801
1804
  {
1802
1805
  altLabels: ["structured"],
1803
- definition: "Perceptible relief or tooth, to the hand or under a raking light, stated without saying what kind.",
1806
+ definition: "Perceptible relief or tooth, to the hand or under a raking light.",
1804
1807
  introducedAt: TEXTURED_DATE,
1805
1808
  label: "Textured",
1806
- note: "The broad term, for a source that says only that a surface is textured or structured. Use a narrower term wherever the source names the relief. Brushed, grained, napped and velvety are not beneath it: each names marks, the material's own structure or a pile, and none is defined by relief or tooth.",
1809
+ note: "The broad term, for a source that says only that a surface is textured or structured. Use a narrower term wherever the source names the relief. Brushed, grained, napped and velvety are not beneath it: each names marks, the material's own structure or a pile, and none is defined by relief or tooth. Widened 2026-10-02: the definition no longer says the kind of relief is unstated, so every term beneath it is also textured.",
1807
1810
  provenance: {
1808
1811
  basis: "evidenced",
1809
1812
  snapshot: TEXTURED_DATE,
@@ -1889,7 +1892,7 @@ var FINISH_TEXTURE_TERMS = [
1889
1892
  repaired(
1890
1893
  "velvety",
1891
1894
  "Velvety",
1892
- "A dense short pile reading soft and light-absorbing.",
1895
+ "A dense short pile meaning soft and light-absorbing.",
1893
1896
  "occasional",
1894
1897
  DROPPED
1895
1898
  ),
@@ -2087,7 +2090,7 @@ var FORMAT_TERMS = [
2087
2090
  term4(
2088
2091
  "subway-tile",
2089
2092
  "Subway tile",
2090
- "A rectangular field tile supplied in roughly the 1:2 proportion of early-twentieth-century station tiling, independent of material, colour and the bond it is laid in.",
2093
+ "A rectangular field tile supplied in roughly the 1:2 proportion of early-twentieth-century station tiling, independent of material, color and the bond it is laid in.",
2091
2094
  {
2092
2095
  altLabels: ["metro tile"],
2093
2096
  broaderSlug: "tile",
@@ -2650,12 +2653,12 @@ var MATERIAL_EVERYDAY_TERMS = [
2650
2653
  { broaderSlug: STONE_SLUG }
2651
2654
  ),
2652
2655
  // Beneath `ceramic` on the same footing as `terracotta`: brick material is a fired clay body,
2653
- // and MATERIAL names the substance. The masonry UNIT is a format reading this package does not
2656
+ // and MATERIAL names the substance. The masonry UNIT is a format meaning this package does not
2654
2657
  // mint; brick slips and thin brick compose `material.brick` with a FORMAT term.
2655
2658
  reviewed3(
2656
2659
  "brick",
2657
2660
  "Brick",
2658
- "Fired clay masonry material, named as the substance rather than as the masonry unit, its bond or its colour.",
2661
+ "Fired clay masonry material, named as the substance rather than as the masonry unit, its bond or its color.",
2659
2662
  wikidata3("Q40089", "brick"),
2660
2663
  { broaderSlug: "ceramic" }
2661
2664
  ),
@@ -2699,7 +2702,7 @@ var MATERIAL_EVERYDAY_TERMS = [
2699
2702
  reviewed3(
2700
2703
  "weathering-steel",
2701
2704
  "Weathering steel",
2702
- "A steel alloy family that forms a stable rust-coloured oxide layer on exposure; the trade names are not the material.",
2705
+ "A steel alloy family that forms a stable rust-colored oxide layer on exposure; the trade names are not the material.",
2703
2706
  wikidata3("Q1024124", "weathering steel"),
2704
2707
  { broaderSlug: "steel", seenAs: ["corten", "Cor-Ten"] }
2705
2708
  ),
@@ -2847,7 +2850,7 @@ var MATERIAL_EVERYDAY_TERMS = [
2847
2850
  },
2848
2851
  // AUTHORED. Cane in furniture is the peeled outer skin of rattan woven as webbing, so it is
2849
2852
  // related to rattan and not an instance of it; bare `cane` also names bamboo and sugar cane,
2850
- // which is why the definition pins the interiors reading and the relation is `related-to`.
2853
+ // which is why the definition pins the interiors meaning and the relation is `related-to`.
2851
2854
  {
2852
2855
  ...authored3(
2853
2856
  "cane",
@@ -3217,10 +3220,10 @@ var MATERIAL_MINERAL_ADDITIVES_TERMS = [
3217
3220
  compositionTerm(
3218
3221
  PIGMENT_SLUG,
3219
3222
  "Pigment",
3220
- "An inorganic insoluble particulate substance added to colour a material, named in a composition when the specific pigment is not.",
3223
+ "An inorganic insoluble particulate substance added to color a material, named in a composition when the specific pigment is not.",
3221
3224
  ISO_18451_1,
3222
3225
  {
3223
- altLabels: ["colour pigment", "color pigment"],
3226
+ altLabels: ["color pigment", "color pigment"],
3224
3227
  broaderSlug: MINERAL_SLUG
3225
3228
  }
3226
3229
  ),
@@ -5517,7 +5520,7 @@ var MATERIAL_TERMS = [
5517
5520
  ...searchCorpusMaterial(
5518
5521
  "stainless-steel",
5519
5522
  "Stainless steel",
5520
- "A corrosion-resistant steel alloy family containing sufficient chromium to form a protective passive layer, named as a bulk material rather than a surface finish or colour.",
5523
+ "A corrosion-resistant steel alloy family containing sufficient chromium to form a protective passive layer, named as a bulk material rather than a surface finish or color.",
5521
5524
  "steel",
5522
5525
  CROSSOVER_DEFINITION_SOURCES.steel
5523
5526
  ),
@@ -5541,7 +5544,7 @@ var MATERIAL_TERMS = [
5541
5544
  searchCorpusMaterial(
5542
5545
  "white-oak",
5543
5546
  "White oak",
5544
- "Timber from the white-oak species group within the genus Quercus, named as a wood material rather than a colour or surface finish.",
5547
+ "Timber from the white-oak species group within the genus Quercus, named as a wood material rather than a color or surface finish.",
5545
5548
  "oak",
5546
5549
  CROSSOVER_DEFINITION_SOURCES.oak
5547
5550
  ),
@@ -5549,7 +5552,7 @@ var MATERIAL_TERMS = [
5549
5552
  crossoverTerm(
5550
5553
  "teak",
5551
5554
  "Teak",
5552
- "Wood from Tectona grandis, named as timber rather than as a colour or surface treatment.",
5555
+ "Wood from Tectona grandis, named as timber rather than as a color or surface treatment.",
5553
5556
  CROSSOVER_DEFINITION_SOURCES.teak,
5554
5557
  HARDWOOD_SLUG2
5555
5558
  )
@@ -5558,7 +5561,7 @@ var MATERIAL_TERMS = [
5558
5561
  ...crossoverTerm(
5559
5562
  "walnut",
5560
5563
  "Walnut",
5561
- "Wood obtained from a tree in the genus Juglans, named as a material rather than as a colour.",
5564
+ "Wood obtained from a tree in the genus Juglans, named as a material rather than as a color.",
5562
5565
  CROSSOVER_DEFINITION_SOURCES.walnut
5563
5566
  ),
5564
5567
  broaderSlug: HARDWOOD_SLUG2,
@@ -5869,7 +5872,7 @@ var MOOD_TERMS = [
5869
5872
  slug: "soft"
5870
5873
  },
5871
5874
  {
5872
- definition: "Sharp edges and clean contrast; the opposite reading to soft.",
5875
+ definition: "Sharp edges and clean contrast; the opposite meaning to soft.",
5873
5876
  label: "Crisp",
5874
5877
  provenance: { basis: "vendored", snapshot: SNAPSHOT4, source: MS_MOOD },
5875
5878
  slug: "crisp"
@@ -6061,12 +6064,12 @@ var PALETTE_HUE_TERMS = [
6061
6064
  }));
6062
6065
  var PALETTE_TEMPERATURE_TERMS = [
6063
6066
  {
6064
- definition: "Dominant colour casts to the warm side of the OKLab warmth axis.",
6067
+ definition: "Dominant color casts to the warm side of the OKLab warmth axis.",
6065
6068
  label: "Warm",
6066
6069
  slug: "warm"
6067
6070
  },
6068
6071
  {
6069
- definition: "Dominant colour casts to the cool side of the OKLab warmth axis.",
6072
+ definition: "Dominant color casts to the cool side of the OKLab warmth axis.",
6070
6073
  label: "Cool",
6071
6074
  slug: "cool"
6072
6075
  },
@@ -6087,14 +6090,14 @@ var PALETTE_TEMPERATURE_TERMS = [
6087
6090
  var PALETTE_CHARACTER_TERMS = [
6088
6091
  {
6089
6092
  canonicalAuthority: colorScopeAuthority("vibrant", PALETTE_MOOD),
6090
- definition: "High chroma; colour is the loudest thing in the scheme.",
6093
+ definition: "High chroma; color is the loudest thing in the scheme.",
6091
6094
  label: "Vibrant",
6092
6095
  provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
6093
6096
  slug: "vibrant"
6094
6097
  },
6095
6098
  {
6096
6099
  canonicalAuthority: colorScopeAuthority("muted", PALETTE_MOOD),
6097
- definition: "Chroma held low by design, with the colours still fully present.",
6100
+ definition: "Chroma held low by design, with the colors still fully present.",
6098
6101
  label: "Muted",
6099
6102
  provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
6100
6103
  slug: "muted"
@@ -6136,7 +6139,7 @@ var PALETTE_CHARACTER_TERMS = [
6136
6139
  },
6137
6140
  {
6138
6141
  canonicalAuthority: colorScopeAuthority("monochrome", PALETTE_MOOD),
6139
- definition: "One hue, or none; the scheme varies by lightness rather than by colour.",
6142
+ definition: "One hue, or none; the scheme varies by lightness rather than by color.",
6140
6143
  label: "Monochrome",
6141
6144
  provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
6142
6145
  slug: "monochrome"
@@ -6147,13 +6150,13 @@ var PALETTE_CHARACTER_TERMS = [
6147
6150
  definition: "Many hues held together deliberately.",
6148
6151
  label: "Polychrome",
6149
6152
  provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
6150
- seenAs: ["colourful"],
6153
+ seenAs: ["colorful"],
6151
6154
  slug: "colorful"
6152
6155
  },
6153
6156
  {
6154
6157
  altLabels: ["jewel-toned"],
6155
6158
  canonicalAuthority: colorScopeAuthority("saturated", "chroma-level"),
6156
- definition: "Deep and fully-loaded colour, jewel-toned rather than bright. Vibrant is loud; saturated is rich, and a dark saturated scheme is ordinary while a dark vibrant one is not.",
6159
+ definition: "Deep and fully-loaded color, jewel-toned rather than bright. Vibrant is loud; saturated is rich, and a dark saturated scheme is ordinary while a dark vibrant one is not.",
6157
6160
  label: "Saturated",
6158
6161
  note: "NOT authored here, and the second time this file made that claim. It was written as authored because colorscope's PaletteMood was checked and its COLOR_CHROMA_LEVELS was not - and the chroma scale is muted, soft, vivid, SATURATED. The same failure as `mid`, in the same file, found by an adversarial pass rather than by the check that should have caught it.",
6159
6162
  provenance: {
@@ -6229,7 +6232,7 @@ var PATTERN_FIGURE_TERMS = [
6229
6232
  pimTerm(
6230
6233
  "cloudy",
6231
6234
  "Cloudy",
6232
- "Soft, diffuse variation in tone with no distinct veins or edges, reading as drifting cloud.",
6235
+ "Soft, diffuse variation in tone with no distinct veins or edges, meaning as drifting cloud.",
6233
6236
  PIM_FIGURE_SOURCE
6234
6237
  ),
6235
6238
  pimTerm(
@@ -6441,11 +6444,11 @@ var PATTERN_TYPE_TERMS = [
6441
6444
  // concept rather than a second correct name for it, so it is `seenAs`, not an alt label.
6442
6445
  { seenAs: ["floral"] }
6443
6446
  ),
6444
- // Heather in the trade names the same mixed-colour-yarn effect Wikidata records; melange, marled
6447
+ // Heather in the trade names the same mixed-color-yarn effect Wikidata records; melange, marled
6445
6448
  // and heathered are its correct names, none more canonical than another.
6446
6449
  {
6447
6450
  altLabels: ["heathered", "marled"],
6448
- definition: "A mixed-colour yarn effect that gives the surface a flecked, uneven tone rather than one solid colour.",
6451
+ definition: "A mixed-color yarn effect that gives the surface a flecked, uneven tone rather than one solid color.",
6449
6452
  introducedAt: TAX57_DATE3,
6450
6453
  label: "Melange",
6451
6454
  provenance: {
@@ -6485,7 +6488,7 @@ var PATTERN_TYPE_TERMS = [
6485
6488
  term7(
6486
6489
  "herringbone-chevron",
6487
6490
  "Herringbone or chevron",
6488
- "A legacy combined reading for directional zigzags formed by angled units or marks.",
6491
+ "A legacy combined meaning for directional zigzags formed by angled units or marks.",
6489
6492
  {
6490
6493
  introducedAt: "2026-08-30",
6491
6494
  note: "Deprecated by the Linear TAX-45 reviewed implementation contract because one combined identity could not distinguish broken herringbone from continuous chevron motifs. Zigzag preserves the non-specific historical meaning; use the narrower herringbone or chevron concept when evidence supports it.",
@@ -6571,7 +6574,7 @@ var PATTERN_TYPE_TERMS = [
6571
6574
  ),
6572
6575
  // AUTHORED. Wikidata's `checkerboard` (Q460711) is the game board the motif is named after,
6573
6576
  // not a definition of the motif. Type only: a checkerboard of tiles is
6574
- // installation-layout.stack-bond plus this motif, so no layout reading is added.
6577
+ // installation-layout.stack-bond plus this motif, so no layout meaning is added.
6575
6578
  {
6576
6579
  altLabels: ["chequerboard", "checkerboard pattern"],
6577
6580
  definition: "A grid repeat of alternating squares in two contrasting tones, whether printed, woven or formed by the units themselves.",
@@ -6595,17 +6598,17 @@ var PATTERN_TYPE_TERMS = [
6595
6598
  term7(
6596
6599
  "gradient",
6597
6600
  "Gradient",
6598
- "A continuous or stepped transition in tone, colour or mark density."
6601
+ "A continuous or stepped transition in tone, color or mark density."
6599
6602
  ),
6600
6603
  term7(
6601
6604
  "texture",
6602
6605
  "Texture",
6603
- "A non-representational repeat whose principal reading is tactile or relief-like."
6606
+ "A non-representational repeat whose principal meaning is tactile or relief-like."
6604
6607
  ),
6605
6608
  term7(
6606
6609
  "toile",
6607
6610
  "Toile",
6608
- "A fine-line pastoral or narrative pictorial repeat, usually in one colour."
6611
+ "A fine-line pastoral or narrative pictorial repeat, usually in one color."
6609
6612
  ),
6610
6613
  term7(
6611
6614
  "character",
@@ -6700,7 +6703,7 @@ var PATTERN_DENSITY_TERMS = [
6700
6703
  RETRIEVAL_DENSITY,
6701
6704
  "dense",
6702
6705
  "Dense",
6703
- "Motif covering the field, with no ground reading as ground.",
6706
+ "Motif covering the field, with no ground meaning as ground.",
6704
6707
  6
6705
6708
  )
6706
6709
  ];
@@ -6737,7 +6740,7 @@ var PATTERN_REGULARITY_TERMS = [
6737
6740
  RETRIEVAL_REGULARITY,
6738
6741
  "organic",
6739
6742
  "Organic",
6740
- "Variation reading as grown or formed rather than composed.",
6743
+ "Variation meaning as grown or formed rather than composed.",
6741
6744
  5
6742
6745
  )
6743
6746
  ];
@@ -6996,7 +6999,7 @@ var PLACE_REGION_TERMS = [
6996
6999
  },
6997
7000
  {
6998
7001
  broaderSlug: "mediterranean",
6999
- definition: "The central-Italian reading of the Mediterranean idiom: stone, ochre render, cypress.",
7002
+ definition: "The central-Italian meaning of the Mediterranean idiom: stone, ochre render, cypress.",
7000
7003
  label: "Tuscan",
7001
7004
  provenance: { basis: "authored", source: ADR2 },
7002
7005
  slug: "tuscan"
@@ -7044,7 +7047,7 @@ var PLACE_REGION_TERMS = [
7044
7047
  },
7045
7048
  {
7046
7049
  broaderSlug: "english-country",
7047
- definition: "The oolitic-limestone reading of the English country idiom: honey stone, steep stone-slate roofs, mullioned windows, low ceilings.",
7050
+ definition: "The oolitic-limestone meaning of the English country idiom: honey stone, steep stone-slate roofs, mullioned windows, low ceilings.",
7048
7051
  label: "Cotswolds",
7049
7052
  provenance: { basis: "authored", source: ADR2 },
7050
7053
  slug: "cotswolds"
@@ -7057,7 +7060,7 @@ var PLACE_REGION_TERMS = [
7057
7060
  slug: "french-provincial"
7058
7061
  },
7059
7062
  {
7060
- definition: "Saturated pigment on mass walls, volcanic stone, deep shade, and colour used architecturally rather than decoratively.",
7063
+ definition: "Saturated pigment on mass walls, volcanic stone, deep shade, and color used architecturally rather than decoratively.",
7061
7064
  label: "Mexican",
7062
7065
  provenance: { basis: "authored", source: ADR2 },
7063
7066
  slug: "mexican"
@@ -8538,7 +8541,7 @@ var GATHERING_SPACES = [
8538
8541
  },
8539
8542
  {
8540
8543
  broaderSlug: "lounge",
8541
- definition: "The soft-seated end of a library or learning space, where reading happens off a chair rather than at a table; the tabled part of the same room is `reading_room`.",
8544
+ definition: "The soft-seated end of a library or learning space, where meaning happens off a chair rather than at a table; the tabled part of the same room is `reading_room`.",
8542
8545
  label: "Library Lounge",
8543
8546
  provenance: PROGRAM_SPACES,
8544
8547
  slug: "library-lounge"
@@ -9117,7 +9120,7 @@ var SANITARY_SPACES = [
9117
9120
  definition: "A small volume holding a lavatory and a basin and nothing else; add a bath or a shower and it becomes `bathroom`.",
9118
9121
  external: [aat2("300081124", "lavatories (rooms)", "exact")],
9119
9122
  label: "Cloakroom / WC",
9120
- note: "Deliberately not a kind of `bathroom`. In American usage a WC is a bathroom and the edge would be clean; in British usage it is not, and the whole point of the term is the absence of bathing provision. Since the difference is exactly what a specifier needs to see, the two terms sit side by side rather than one inside the other. `cloakroom` was an carried as another name here in the 0.2 draft and is now a term of its own for the coat room, on Getty's reading; the British domestic sense meaning this room moves to Seen in the wild, where observed but non-canonical labels belong. The label is left alone so the published id keeps its name.",
9123
+ note: "Deliberately not a kind of `bathroom`. In American usage a WC is a bathroom and the edge would be clean; in British usage it is not, and the whole point of the term is the absence of bathing provision. Since the difference is exactly what a specifier needs to see, the two terms sit side by side rather than one inside the other. `cloakroom` was an carried as another name here in the 0.2 draft and is now a term of its own for the coat room, on Getty's meaning; the British domestic sense meaning this room moves to Seen in the wild, where observed but non-canonical labels belong. The label is left alone so the published id keeps its name.",
9121
9124
  provenance: MS_ROOM_PROGRAM,
9122
9125
  seenAs: ["downstairs loo", "half bath", "cloakroom", "powder_room"],
9123
9126
  slug: "wc"
@@ -9360,7 +9363,7 @@ var SLEEPING_SPACES = [
9360
9363
  definition: "A let sleeping volume in a hotel, taken together with its ensuite: the guest's whole private territory rather than the bed alone.",
9361
9364
  external: [aat2("300248355", "guest rooms", "related")],
9362
9365
  label: "Hotel Room",
9363
- // DOWNGRADED from `close` on 2026-08-21 after reading AAT's scope note, which reads: "Rooms in
9366
+ // DOWNGRADED from `close` on 2026-08-21 after meaning AAT's scope note, which reads: "Rooms in
9364
9367
  // DWELLINGS set aside or otherwise intended for temporary use by guests and usually not
9365
9368
  // regularly used by household members." That is a domestic spare room, not a let hotel bedroom,
9366
9369
  // and `close` would have asserted they substitute for one another in retrieval. AAT has no term
@@ -9512,7 +9515,7 @@ var WORKING_SPACES = [
9512
9515
  {
9513
9516
  altLabels: ["home office"],
9514
9517
  broaderSlug: "workspace",
9515
- definition: "A domestic volume given over to desk work, reading or household administration.",
9518
+ definition: "A domestic volume given over to desk work, meaning or household administration.",
9516
9519
  external: [
9517
9520
  aat2("300081781", "studies (rooms)", "exact"),
9518
9521
  aat2("300180734", "home offices (workspaces)", "close")
@@ -9673,7 +9676,7 @@ var STYLE_TERMS = [
9673
9676
  {
9674
9677
  altLabels: ["mcm"],
9675
9678
  broaderSlug: "modernism",
9676
- definition: "The postwar domestic reading of modernism: organic curves, teak and walnut, tapered legs, warm rather than austere.",
9679
+ definition: "The postwar domestic meaning of modernism: organic curves, teak and walnut, tapered legs, warm rather than austere.",
9677
9680
  external: [aat3("300343610", "Mid-Century Modernist", "exact")],
9678
9681
  label: "Mid-Century Modern",
9679
9682
  note: "Style, not period. A reproduction built in 2024 is `style.mid-century-modern` in the `period.contemporary` period, which is why the two axes cannot be one.",
@@ -9799,7 +9802,7 @@ var STYLE_TERMS = [
9799
9802
  },
9800
9803
  // Zero hits on all three. AAT has no maximalism concept in any domain.
9801
9804
  {
9802
- definition: "Deliberate accumulation: pattern on pattern, colour on colour, more held together on purpose rather than by accident.",
9805
+ definition: "Deliberate accumulation: pattern on pattern, color on color, more held together on purpose rather than by accident.",
9803
9806
  label: "Maximalism",
9804
9807
  provenance: {
9805
9808
  basis: "evidenced",
@@ -10019,7 +10022,7 @@ var STYLE_TERMS = [
10019
10022
  styleKind: MOVEMENT
10020
10023
  },
10021
10024
  {
10022
- definition: "Geometric order and typological clarity taken as first principles, especially the Italian interwar and Tendenza readings.",
10025
+ definition: "Geometric order and typological clarity taken as first principles, especially the Italian interwar and Tendenza meanings.",
10023
10026
  external: [aat3("300457776", "Rationalist (style and movement)", "exact")],
10024
10027
  label: "Rationalism",
10025
10028
  provenance: {
@@ -10424,7 +10427,7 @@ var TYPOLOGY_TERMS = [
10424
10427
  slug: "museum"
10425
10428
  },
10426
10429
  {
10427
- definition: "Premises holding a collection for reading and lending, planned around both dense storage and long uninterrupted occupation of the reading floor.",
10430
+ definition: "Premises holding a collection for meaning and lending, planned around both dense storage and long uninterrupted occupation of the meaning floor.",
10428
10431
  label: "Library",
10429
10432
  provenance: PROJECTS_PLATFORM,
10430
10433
  slug: "library"
@@ -10533,6 +10536,9 @@ var TYPOLOGY_TERMS = [
10533
10536
  var REVIEW_DATE11 = "2026-08-31";
10534
10537
  var REVIEW_SOURCE8 = "@instruments/taxonomy TAX-45 reviewed implementation contract";
10535
10538
  var PICKET_SOURCE = "Linear TAX-45 reviewed implementation contract; picket product fixture in a materials-retrieval system (src-05)";
10539
+ var ROUND_OR_OVAL = "round-or-oval";
10540
+ var ROUND_OR_OVAL_DATE = "2026-10-02";
10541
+ var ROUND_OR_OVAL_CORPUS = "the tile-shape column in a materials-marketplace catalogue (src-04)";
10536
10542
  var term11 = (slug, label, definition, extra = {}) => ({
10537
10543
  definition,
10538
10544
  introducedAt: REVIEW_DATE11,
@@ -10553,13 +10559,30 @@ var UNIT_SHAPE_TERMS = [
10553
10559
  "Rectangle",
10554
10560
  "A four-sided unit with four right angles whose length and width may differ."
10555
10561
  ),
10562
+ term11(
10563
+ ROUND_OR_OVAL,
10564
+ "Round or oval",
10565
+ "A unit with a circular or oval outline.",
10566
+ {
10567
+ introducedAt: ROUND_OR_OVAL_DATE,
10568
+ note: "The broad term, for a source that says a unit is round or oval without saying which. Use circle or oval wherever the source names the outline. A straight-sided unit with rounded corners or edges is neither. Semicircle, scallop and arabesque are separate shapes.",
10569
+ provenance: {
10570
+ basis: "evidenced",
10571
+ snapshot: ROUND_OR_OVAL_DATE,
10572
+ source: ROUND_OR_OVAL_CORPUS
10573
+ },
10574
+ reviewedAt: ROUND_OR_OVAL_DATE
10575
+ }
10576
+ ),
10556
10577
  term11("circle", "Circle", "A round unit bounded by one continuous curve.", {
10557
- altLabels: ["Round"]
10578
+ altLabels: ["Round"],
10579
+ broaderSlug: ROUND_OR_OVAL
10558
10580
  }),
10559
10581
  term11(
10560
10582
  "oval",
10561
10583
  "Oval",
10562
- "An elongated rounded unit bounded by one continuous curve."
10584
+ "An elongated rounded unit bounded by one continuous curve.",
10585
+ { broaderSlug: ROUND_OR_OVAL }
10563
10586
  ),
10564
10587
  term11(
10565
10588
  "semicircle",
@@ -10639,10 +10662,10 @@ var MOOD_ANCHORS = {
10639
10662
  "Interior stripped to a bare floor and unadorned walls, a single hard seat, no textile anywhere, fixings and joints left visible, and every horizontal surface empty"
10640
10663
  ],
10641
10664
  calm: [
10642
- "Interior holding very few objects, widely spaced, one continuous wall colour running uninterrupted, storage closed and flush, and light arriving evenly with no bright spot anywhere in the frame"
10665
+ "Interior holding very few objects, widely spaced, one continuous wall color running uninterrupted, storage closed and flush, and light arriving evenly with no bright spot anywhere in the frame"
10643
10666
  ],
10644
10667
  crisp: [
10645
- "Interior where every junction is held on a shadow line, arrises square and unsoftened, flat matt colour meeting flat matt colour without a transition, and shadows falling with a hard boundary from a single source"
10668
+ "Interior where every junction is held on a shadow line, arrises square and unsoftened, flat matt color meeting flat matt color without a transition, and shadows falling with a hard boundary from a single source"
10646
10669
  ],
10647
10670
  domestic: [
10648
10671
  "Interior with a book left face-down, a mug and a plate still on the table, shoes by the door, a cable running across the floor to a socket, and cushions pushed out of shape by use"
@@ -10666,7 +10689,7 @@ var MOOD_ANCHORS = {
10666
10689
  "Interior at low overall light level with deeply saturated dark walls absorbing what light there is, small pools thrown by table lamps, and the ceiling lost in shadow above"
10667
10690
  ],
10668
10691
  playful: [
10669
- "Interior with strong colour applied to a structural element, a form that serves no function, seats that deliberately do not match, and objects arranged to make a visual joke"
10692
+ "Interior with strong color applied to a structural element, a form that serves no function, seats that deliberately do not match, and objects arranged to make a visual joke"
10670
10693
  ],
10671
10694
  "quiet-luxury": [
10672
10695
  // A MAGNET IN ITS FIRST DRAFT, and worth recording why. It listed figured stone, grain-matched
@@ -10715,7 +10738,7 @@ var PERIOD_ANCHORS = {
10715
10738
  "Interior with a curved metal casement set into rendered wall, a tiled fireplace surround, a picture rail in a semi-detached plan, and parquet laid in block"
10716
10739
  ],
10717
10740
  "late-century": [
10718
- "Interior in a converted industrial shell with services run exposed overhead, structural steel left visible and painted, and applied classical quotation set against it in strong flat colour"
10741
+ "Interior in a converted industrial shell with services run exposed overhead, structural steel left visible and painted, and applied classical quotation set against it in strong flat color"
10719
10742
  ],
10720
10743
  medieval: [
10721
10744
  "Interior carried on load-bearing masonry and an irregular timber frame, openings small against the mass of wall, a stone floor worn hollow, and the roof structure open to view"
@@ -10753,7 +10776,7 @@ var PLACE_ANCHORS = {
10753
10776
  "Bleached and salt-worn timber, blue worked against white, rattan and rope, and light arriving upward off water"
10754
10777
  ],
10755
10778
  cotswolds: [
10756
- "Honey-coloured oolitic limestone laid in courses, mullioned windows with leaded lights, a steep roof in graded stone slate, and beamed ceilings low enough to duck under"
10779
+ "Honey-colored oolitic limestone laid in courses, mullioned windows with leaded lights, a steep roof in graded stone slate, and beamed ceilings low enough to duck under"
10757
10780
  ],
10758
10781
  desert: [
10759
10782
  "Thermal mass with few and small openings placed away from the sun, earth-toned ground running to the building with no planted break, and shadow used as the only relief"
@@ -10805,7 +10828,7 @@ var PLACE_ANCHORS = {
10805
10828
  "Ochre render over rubble stone, cypress standing against the skyline, large-format terracotta tile underfoot, and chestnut beams carrying the floor above"
10806
10829
  ],
10807
10830
  urban: [
10808
- "Continuous street frontage with a party wall to each side, the building reading as one of an unbroken run, and the pavement immediately at the door"
10831
+ "Continuous street frontage with a party wall to each side, the building meaning as one of an unbroken run, and the pavement immediately at the door"
10809
10832
  ],
10810
10833
  waterfront: [
10811
10834
  // WRITTEN TIGHT ON PURPOSE. The first draft said only "water at the window", and a bare query
@@ -11094,7 +11117,7 @@ var GATHERING_ANCHORS = {
11094
11117
  "A pool or table-tennis table taking the centre with clearance walked around it, cues racked on the wall, a scoreboard, and low bench seating pushed back to the edges"
11095
11118
  ],
11096
11119
  "library-lounge": [
11097
- "The soft end of a public library: strangers reading in facing armchairs, a periodicals rack, a returns trolley parked at the edge of the carpet, and shelving running away behind the seating"
11120
+ "The soft end of a public library: strangers meaning in facing armchairs, a periodicals rack, a returns trolley parked at the edge of the carpet, and shelving running away behind the seating"
11098
11121
  ],
11099
11122
  "living-room": [
11100
11123
  "A sofa and armchairs turned toward a fireplace or a window, a coffee table between them with books and a remote on it, a large rug anchoring the group and lamps at the corners"
@@ -11408,7 +11431,7 @@ var SLEEPING_ANCHORS = {
11408
11431
  "A bed made up flat and unslept-in, empty hanging space in the wardrobe, a folded towel set out at the foot, a bedside carafe, and nothing personal on any surface"
11409
11432
  ],
11410
11433
  "hotel-room": [
11411
- "A made bed with a runner across the foot, matched side tables and reading lights either side, a luggage bench, a folder and a card key on the desk, blackout curtains drawn back"
11434
+ "A made bed with a runner across the foot, matched side tables and meaning lights either side, a luggage bench, a folder and a card key on the desk, blackout curtains drawn back"
11412
11435
  ],
11413
11436
  nursery: [
11414
11437
  "A cot with a mobile turning above it, a changing surface with a stack of folded muslins, soft flooring, low open baskets of toys, and a blackout blind at the window"
@@ -11525,7 +11548,7 @@ var STYLE_ANCHORS = {
11525
11548
  "Brutalist interior with board-marked in-situ concrete left as struck, heavy monolithic massing, deep window reveals, exposed services, raw unfinished surfaces treated as the finish"
11526
11549
  ],
11527
11550
  constructivism: [
11528
- "Constructivist interior with dynamic diagonal composition, exposed structural drama, primary colour on structural members, industrial glazing, early Soviet avant-garde geometry"
11551
+ "Constructivist interior with dynamic diagonal composition, exposed structural drama, primary color on structural members, industrial glazing, early Soviet avant-garde geometry"
11529
11552
  ],
11530
11553
  contemporary: [
11531
11554
  "Contemporary interior with clean unornamented lines, flush cabinetry, large-format tile, neutral palette with a single accent, recessed lighting, current rather than period-referencing"
@@ -11552,7 +11575,7 @@ var STYLE_ANCHORS = {
11552
11575
  "Japandi interior with low platform furniture in pale oak and black-stained ash, paper and linen shades, a single ceramic vessel on a plain shelf, walls in warm off-white lime, floors in light timber, and every surface left with its natural grain and no pattern"
11553
11576
  ],
11554
11577
  maximalism: [
11555
- "Bold maximalist interior with rich colours, statement art, mixed patterns, velvet upholstery, lacquered surfaces, decorative objects, gallery walls, patterned rugs, brass accents, eclectic furniture mixing periods and styles"
11578
+ "Bold maximalist interior with rich colors, statement art, mixed patterns, velvet upholstery, lacquered surfaces, decorative objects, gallery walls, patterned rugs, brass accents, eclectic furniture mixing periods and styles"
11556
11579
  ],
11557
11580
  "mid-century-modern": [
11558
11581
  "Mid-century modern interior with teak and walnut furniture, Eames chairs, organic curves, warm wood panelling, terrazzo floors, statement pendant lights, Scandinavian influence, bold geometric textiles, open shelving, vintage design classics"
@@ -11574,7 +11597,7 @@ var STYLE_ANCHORS = {
11574
11597
  "Parametric interior with continuously varied surfaces, ruled geometry, seamless composite panelling, no repeated module, form generated by rule rather than composed element by element"
11575
11598
  ],
11576
11599
  postmodernism: [
11577
- "Postmodern interior with historical quotation used knowingly, oversized classical mouldings in unexpected colour, laminate and terrazzo, split pediments, ornament readmitted as commentary"
11600
+ "Postmodern interior with historical quotation used knowingly, oversized classical mouldings in unexpected color, laminate and terrazzo, split pediments, ornament readmitted as commentary"
11578
11601
  ],
11579
11602
  rationalism: [
11580
11603
  "Rationalist interior with strict geometric order, typological clarity, travertine and plaster, repeated square openings, Italian interwar and Tendenza discipline"
@@ -11587,7 +11610,7 @@ var STYLE_ANCHORS = {
11587
11610
  "Classic tailored interior with panelled walls, restrained mouldings, symmetrical furniture arrangement, quiet pattern, nothing improvised"
11588
11611
  ],
11589
11612
  transitional: [
11590
- "Transitional interior with period silhouettes stripped of ornament, a shaker-fronted kitchen in a flat colour, classical proportion in contemporary materials, the deliberate midpoint between traditional and contemporary"
11613
+ "Transitional interior with period silhouettes stripped of ornament, a shaker-fronted kitchen in a flat color, classical proportion in contemporary materials, the deliberate midpoint between traditional and contemporary"
11591
11614
  ],
11592
11615
  vernacular: [
11593
11616
  "Vernacular building made from what the place supplies, local stone or timber, roof pitch set by the local weather, details carried by regional trade practice rather than by drawing"
@@ -11860,7 +11883,7 @@ var AXES = [
11860
11883
  { label: "Character", slug: "character", terms: PALETTE_CHARACTER_TERMS }
11861
11884
  ],
11862
11885
  label: "Palette",
11863
- question: "What colour is it?",
11886
+ question: "What color is it?",
11864
11887
  slug: "palette",
11865
11888
  status: "authored"
11866
11889
  },
@@ -11876,7 +11899,7 @@ var AXES = [
11876
11899
  status: "authored"
11877
11900
  },
11878
11901
  {
11879
- boundary: "Daylight is the natural light a space receives and the direction it comes from. Aspect is compass-literal and says nothing about the sun: which side is bright depends on the hemisphere, and that consequence is a separate claim on Light. It is not Palette, which is the colour of what is in the room rather than the light falling on it; not Mood, where airy and moody are outcomes a scheme achieves rather than conditions a room has; not Element, which holds the windows, rooflights and luminaires themselves, and artificial lighting is never recorded here; and not Place, which says where a building stands rather than which way a room looks.",
11902
+ boundary: "Daylight is the natural light a space receives and the direction it comes from. Aspect is compass-literal and says nothing about the sun: which side is bright depends on the hemisphere, and that consequence is a separate claim on Light. It is not Palette, which is the color of what is in the room rather than the light falling on it; not Mood, where airy and moody are outcomes a scheme achieves rather than conditions a room has; not Element, which holds the windows, rooflights and luminaires themselves, and artificial lighting is never recorded here; and not Place, which says where a building stands rather than which way a room looks.",
11880
11903
  facets: [
11881
11904
  {
11882
11905
  governance: TAX48_AUTHORED_GOVERNANCE,
@@ -11898,7 +11921,7 @@ var AXES = [
11898
11921
  status: "authored"
11899
11922
  },
11900
11923
  {
11901
- boundary: "Season is the time of year a scheme is designed for or evokes, reached by `evokes` like Place and Period are. It is not Period, which is a date range a season never has; not Palette, which carries the colours a seasonal scheme happens to choose; and not Daylight, which records the light a room receives rather than the calendar a scheme refers to.",
11924
+ boundary: "Season is the time of year a scheme is designed for or evokes, reached by `evokes` like Place and Period are. It is not Period, which is a date range a season never has; not Palette, which carries the colors a seasonal scheme happens to choose; and not Daylight, which records the light a room receives rather than the calendar a scheme refers to.",
11902
11925
  facets: single("season", "Season", SEASON_TERMS, TAX48_AUTHORED_GOVERNANCE),
11903
11926
  governance: TAX48_AUTHORED_GOVERNANCE,
11904
11927
  label: "Season",
@@ -11941,7 +11964,7 @@ var AXES = [
11941
11964
  status: "declared"
11942
11965
  },
11943
11966
  {
11944
- boundary: "How much is going on on the surface: pattern incidence, applied ornament, layering, and the restraint-to-maximalism range. It is not PALETTE, which carries how colour behaves rather than how much incident there is, and it is not STYLE, though several style terms are largely density claims wearing an idiom's name.",
11967
+ boundary: "How much is going on on the surface: pattern incidence, applied ornament, layering, and the restraint-to-maximalism range. It is not PALETTE, which carries how color behaves rather than how much incident there is, and it is not STYLE, though several style terms are largely density claims wearing an idiom's name.",
11945
11968
  facets: [],
11946
11969
  gap: "Identified after the fact, by the axis critique of 21 August 2026, and it is the one real gap that review found. The source vocabularies keep asking this question and no axis here answers it: a rendering pipeline's `patterned`, a materials-retrieval system's `playful_graphic` and `decorative_traditional`, a furnishings retailer's `Eclectic`, and an editorial image library's `Modern Maximalism` against `Warm Minimalism` - a pair that differs chiefly on density and barely on anything else. The materials-retrieval system already carries `ms_pattern_density` at MATERIAL scale, which is the obvious seed, but the room-scale question is not the same one: a room of quiet materials can still be dense with incident. Until this exists, `maximalism` is filed as a style, which flatters it.",
11947
11970
  label: "Density",
@@ -11994,7 +12017,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
11994
12017
  // src/v1.ts
11995
12018
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
11996
12019
  var TAXONOMY_SNAPSHOT = "2026-10-02";
11997
- var TAXONOMY_VERSION = "1.13.0";
12020
+ var TAXONOMY_VERSION = "2.0.0";
11998
12021
  var PUBLISHED_V1_BASELINE = "2026-08-30";
11999
12022
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
12000
12023
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -12271,16 +12294,16 @@ var colorScope = (identifier, referenceKind) => ({
12271
12294
  });
12272
12295
  var WALNUT_MATERIAL = {
12273
12296
  authority: "taxonomy",
12274
- role: "primary",
12297
+ meaningPriority: "primary",
12275
12298
  uri: `${TAXONOMY_BASE_URI}/id/material/walnut`
12276
12299
  };
12277
12300
  var WALNUT_COLOUR = {
12278
12301
  ...colorScope("walnut", NAMED_COLOR_REFERENCE_KIND),
12279
- role: "secondary"
12302
+ meaningPriority: "secondary"
12280
12303
  };
12281
- var ordered = (path, role) => ({
12304
+ var ordered = (path, meaningPriority) => ({
12282
12305
  authority: "taxonomy",
12283
- role,
12306
+ meaningPriority,
12284
12307
  uri: `${TAXONOMY_BASE_URI}/id/${path}`
12285
12308
  });
12286
12309
  var ENGINEERED_QUARTZ_SURFACING = ordered(
@@ -12291,14 +12314,14 @@ var QUARTZ_MINERAL = ordered("material/quartz", "secondary");
12291
12314
  var MELAMINE_BOARD = ordered("material/melamine-faced-board", "primary");
12292
12315
  var MELAMINE_RESIN = ordered("material/melamine", "secondary");
12293
12316
  var HIERARCHY_REVIEW_DATE = "2026-09-22";
12294
- var ORDERED_READING_EVIDENCE = "stored material values in a materials-retrieval system (src-05)";
12317
+ var MEANING_PRIORITY_EVIDENCE = "stored material values in a materials-retrieval system (src-05)";
12295
12318
  var HIERARCHY_REVIEW_LIFECYCLE = {
12296
12319
  introducedAt: HIERARCHY_REVIEW_DATE,
12297
12320
  reviewedAt: HIERARCHY_REVIEW_DATE,
12298
12321
  status: "active"
12299
12322
  };
12300
- var AMBIGUITY_GOVERNANCE = "Taxonomy preserves the governed readings without assigning a default, role, contextual preference, or consumer route.";
12301
- var ORDERED_READING_GOVERNANCE = "The two readings are deliberately separate; the default records trade usage and does not merge the concepts.";
12323
+ var AMBIGUITY_GOVERNANCE = "Taxonomy preserves the governed meanings without assigning a default, meaning priority, contextual preference, or consumer route.";
12324
+ var MEANING_PRIORITY_GOVERNANCE = "The two meanings are deliberately separate; the default records trade usage and does not merge the concepts.";
12302
12325
  var TAX_1_9_0_DATE = "2026-09-27";
12303
12326
  var TAXONOMY_SNAPSHOT_LIFECYCLE = {
12304
12327
  introducedAt: TAX_1_9_0_DATE,
@@ -12311,6 +12334,12 @@ var TAX57_LIFECYCLE = {
12311
12334
  reviewedAt: TAX57_DATE4,
12312
12335
  status: "active"
12313
12336
  };
12337
+ var ROUND_OR_OVAL_REVIEW_DATE = "2026-10-02";
12338
+ var ROUND_OR_OVAL_LIFECYCLE = {
12339
+ introducedAt: TAX57_DATE4,
12340
+ reviewedAt: ROUND_OR_OVAL_REVIEW_DATE,
12341
+ status: "active"
12342
+ };
12314
12343
  var TAX57_SHAPE_SOURCE = "the tile-shape column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
12315
12344
  var TAX57_REVIEW_SOURCE = "Linear TAX-57 visual-vocabulary review";
12316
12345
  var REVIEW_DATE12 = "2026-09-11";
@@ -12325,7 +12354,7 @@ var reviewedTaxonomy = (path) => ({
12325
12354
  authority: "taxonomy",
12326
12355
  uri: `${TAXONOMY_BASE_URI}/id/${path}`
12327
12356
  });
12328
- var referencedCrossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, introducedAt = HIERARCHY_REVIEW_DATE, additionalReadings = []) => ({
12357
+ var referencedCrossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, introducedAt = HIERARCHY_REVIEW_DATE, additionalMeanings = []) => ({
12329
12358
  explanation,
12330
12359
  governance: lexicalGovernance(
12331
12360
  AMBIGUITY_GOVERNANCE,
@@ -12336,16 +12365,16 @@ var referencedCrossover = (phrase, taxonomyPath, colorScopeIdentifier, explanati
12336
12365
  },
12337
12366
  { introducedAt, reviewedAt: HIERARCHY_REVIEW_DATE, status: "active" }
12338
12367
  ),
12339
- outcome: "ambiguous",
12340
- phrase,
12341
- readings: [
12368
+ meanings: [
12342
12369
  reviewedTaxonomy(taxonomyPath),
12343
12370
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12344
- ...additionalReadings
12345
- ]
12371
+ ...additionalMeanings
12372
+ ],
12373
+ outcome: "ambiguous",
12374
+ phrase
12346
12375
  });
12347
12376
  var WOOD_HANDBOOK5 = "USDA Wood Handbook (2021), chapter 2";
12348
- var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, additionalReadings = []) => ({
12377
+ var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, additionalMeanings = []) => ({
12349
12378
  explanation,
12350
12379
  governance: lexicalGovernance(
12351
12380
  AMBIGUITY_GOVERNANCE,
@@ -12360,39 +12389,39 @@ var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explan
12360
12389
  status: "active"
12361
12390
  }
12362
12391
  ),
12363
- outcome: "ambiguous",
12364
- phrase,
12365
- readings: [
12392
+ meanings: [
12366
12393
  reviewedTaxonomy(taxonomyPath),
12367
12394
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12368
- ...additionalReadings
12369
- ]
12395
+ ...additionalMeanings
12396
+ ],
12397
+ outcome: "ambiguous",
12398
+ phrase
12370
12399
  });
12371
12400
  var crossoverAmbiguity = (phrase, taxonomyUri, colorScopeIdentifier, explanation, source, additionalTaxonomyUris = []) => ({
12372
12401
  explanation,
12373
12402
  governance: lexicalGovernance(
12374
- "Taxonomy preserves the evidenced readings without assigning a default, role, contextual preference, or consumer route.",
12403
+ "Taxonomy preserves the evidenced meanings without assigning a default, meaning priority, contextual preference, or consumer route.",
12375
12404
  {
12376
12405
  basis: "evidenced",
12377
12406
  snapshot: PUBLISHED_V1_BASELINE,
12378
12407
  source
12379
12408
  }
12380
12409
  ),
12381
- outcome: "ambiguous",
12382
- phrase,
12383
- readings: [
12410
+ meanings: [
12384
12411
  { authority: "taxonomy", uri: taxonomyUri },
12385
12412
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12386
12413
  ...additionalTaxonomyUris.map((uri) => ({
12387
12414
  authority: "taxonomy",
12388
12415
  uri
12389
12416
  }))
12390
- ]
12417
+ ],
12418
+ outcome: "ambiguous",
12419
+ phrase
12391
12420
  });
12392
12421
  var crossoverEquivalent = (phrase, taxonomyUri, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor()) => ({
12393
12422
  explanation,
12394
12423
  governance: lexicalGovernance(
12395
- "Taxonomy records the evidenced material reading without assigning a consumer route.",
12424
+ "Taxonomy records the evidenced material meaning without assigning a consumer route.",
12396
12425
  {
12397
12426
  basis: "evidenced",
12398
12427
  snapshot,
@@ -12404,8 +12433,8 @@ var crossoverEquivalent = (phrase, taxonomyUri, explanation, source, snapshot =
12404
12433
  phrase,
12405
12434
  target: { authority: "taxonomy", uri: taxonomyUri }
12406
12435
  });
12407
- var crossoverTaxonomyAmbiguity = (phrase, readings, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor(), basis = "evidenced") => {
12408
- const [first, second] = readings;
12436
+ var crossoverTaxonomyAmbiguity = (phrase, meanings, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor(), basis = "evidenced") => {
12437
+ const [first, second] = meanings;
12409
12438
  return {
12410
12439
  explanation,
12411
12440
  governance: lexicalGovernance(
@@ -12417,22 +12446,45 @@ var crossoverTaxonomyAmbiguity = (phrase, readings, explanation, source, snapsho
12417
12446
  },
12418
12447
  lifecycle
12419
12448
  ),
12420
- outcome: "ambiguous",
12421
- phrase,
12422
- readings: [
12449
+ meanings: [
12423
12450
  { authority: "taxonomy", uri: first },
12424
12451
  { authority: "taxonomy", uri: second }
12425
- ]
12452
+ ],
12453
+ outcome: "ambiguous",
12454
+ phrase
12426
12455
  };
12427
12456
  };
12428
- var AUTHORED_LEXICAL_ENTRIES = [
12457
+ var MG2620_LEXICAL_REVIEW_DATE = "2026-10-10";
12458
+ var AUTHORED_PHRASE_ENTRIES = [
12459
+ {
12460
+ explanation: "Matt is the British-English spelling of matte for surface sheen. Qualifiers such as semi-matt and full-matt retain their own meanings; this entry does not strip them.",
12461
+ governance: lexicalGovernance(
12462
+ "Primary supplier usage supports spelling equivalence, not a measured gloss threshold or a consumer proposal rate.",
12463
+ {
12464
+ basis: "referenced",
12465
+ snapshot: MG2620_LEXICAL_REVIEW_DATE,
12466
+ source: "MG-2620 lexical review; Marazzi matt surface finish, https://www.marazzigroup.com/blog/are-glossy-or-matt-coverings-better-for-your-bathroom-we-explain-the-benefits-and-differences-and-provide-useful-tips/; Tikkurila matt/Matte finish usage, https://tikkurila.com/how-choose-right-paint-your-interior-walls-and-ceilings"
12467
+ },
12468
+ {
12469
+ introducedAt: MG2620_LEXICAL_REVIEW_DATE,
12470
+ reviewedAt: MG2620_LEXICAL_REVIEW_DATE,
12471
+ status: "active"
12472
+ }
12473
+ ),
12474
+ outcome: "equivalent",
12475
+ phrase: "matt",
12476
+ target: {
12477
+ authority: "taxonomy",
12478
+ uri: `${TAXONOMY_BASE_URI}/id/finish/sheen/matte`
12479
+ }
12480
+ },
12429
12481
  crossoverTaxonomyAmbiguity(
12430
12482
  "herringbone or chevron",
12431
12483
  [
12432
12484
  `${TAXONOMY_BASE_URI}/id/pattern/type/herringbone`,
12433
12485
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
12434
12486
  ],
12435
- "The former combined pattern label names two distinct motif readings. It does not identify an installation layout or physical unit shape without separate evidence.",
12487
+ "The former combined pattern label names two distinct motif meanings. It does not identify an installation layout or physical unit shape without separate evidence.",
12436
12488
  "Linear TAX-45 reviewed implementation contract",
12437
12489
  TAX45_REVIEW_SNAPSHOT,
12438
12490
  {
@@ -12448,7 +12500,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12448
12500
  `${TAXONOMY_BASE_URI}/id/pattern/type/herringbone`,
12449
12501
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
12450
12502
  ],
12451
- "The furnishings retailer's compound phrase did not record which of the two distinct motif readings was intended.",
12503
+ "The furnishings retailer's compound phrase did not record which of the two distinct motif meanings was intended.",
12452
12504
  `${RETAIL_PATTERN_SOURCE}, reconciled by Linear TAX-45`,
12453
12505
  TAX45_REVIEW_SNAPSHOT,
12454
12506
  {
@@ -12464,7 +12516,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12464
12516
  `${TAXONOMY_BASE_URI}/id/product-category/mosaic-tile`,
12465
12517
  `${TAXONOMY_BASE_URI}/id/format/mosaic`
12466
12518
  ],
12467
- "Mosaic can name a purchasable mosaic-tile product or the small-piece supply format; it is neither inherently a pattern nor a substance. Consumers must union any exact ColorScope named-paint reading with these domain readings rather than let an exact Taxonomy phrase shadow the external identity.",
12519
+ "Mosaic can name a purchasable mosaic-tile product or the small-piece supply format; it is neither inherently a pattern nor a substance. Consumers must union any exact ColorScope named-paint meaning with these domain meanings rather than let an exact Taxonomy phrase shadow the external identity.",
12468
12520
  `${searchCorpusEvidence("mosaic")}; Uniclass Pr_35_93_96_53 Mosaic tiles; consumer authority-union boundary reviewed 2026-08-31`,
12469
12521
  SEARCH_CORPUS_SNAPSHOT,
12470
12522
  {
@@ -12474,9 +12526,9 @@ var AUTHORED_LEXICAL_ENTRIES = [
12474
12526
  }
12475
12527
  ),
12476
12528
  {
12477
- explanation: "Blue is a ColorScope colour-family reading; Taxonomy references that authority rather than minting a rival colour identity.",
12529
+ explanation: "Blue is a ColorScope color-family meaning; Taxonomy references that authority rather than minting a rival color identity.",
12478
12530
  governance: lexicalGovernance(
12479
- "The ColorScope family is the single governed reading of the unqualified colour word.",
12531
+ "The ColorScope family is the single governed meaning of the unqualified color word.",
12480
12532
  {
12481
12533
  basis: "vendored",
12482
12534
  snapshot: PUBLISHED_V1_BASELINE,
@@ -12491,14 +12543,14 @@ var AUTHORED_LEXICAL_ENTRIES = [
12491
12543
  "alabaster",
12492
12544
  `${TAXONOMY_BASE_URI}/id/material/alabaster`,
12493
12545
  "alabaster",
12494
- "Alabaster can name decorative gypsum stone or the ColorScope named colour Alabaster; neither reading establishes the other.",
12495
- `${crossoverSource("alabaster")}; @instruments/colorscope 9.4.0 id "alabaster", family cream, matching the retired "cream-soft-cream-white" reading's cream family`
12546
+ "Alabaster can name decorative gypsum stone or the ColorScope named color Alabaster; neither meaning establishes the other.",
12547
+ `${crossoverSource("alabaster")}; @instruments/colorscope 9.4.0 id "alabaster", family cream, matching the retired "cream-soft-cream-white" meaning's cream family`
12496
12548
  ),
12497
12549
  crossoverAmbiguity(
12498
12550
  "brass",
12499
12551
  `${TAXONOMY_BASE_URI}/id/material/brass`,
12500
12552
  "brass",
12501
- "Brass can name a copper-zinc alloy, an exposed applied brass finish, or a ColorScope named colour; none establishes either of the others.",
12553
+ "Brass can name a copper-zinc alloy, an exposed applied brass finish, or a ColorScope named color; none establishes either of the others.",
12502
12554
  crossoverSource("brass"),
12503
12555
  [`${TAXONOMY_BASE_URI}/id/finish/treatment/brass`]
12504
12556
  ),
@@ -12506,105 +12558,105 @@ var AUTHORED_LEXICAL_ENTRIES = [
12506
12558
  "bronze",
12507
12559
  `${TAXONOMY_BASE_URI}/id/material/bronze`,
12508
12560
  "bronze",
12509
- "Bronze can name a copper-alloy family or a ColorScope named colour; the unmodified word does not identify a specific composition.",
12561
+ "Bronze can name a copper-alloy family or a ColorScope named color; the unmodified word does not identify a specific composition.",
12510
12562
  crossoverSource("bronze")
12511
12563
  ),
12512
12564
  crossoverAmbiguity(
12513
12565
  "chrome",
12514
12566
  `${TAXONOMY_BASE_URI}/id/finish/treatment/chrome`,
12515
12567
  "chrome",
12516
- "Chrome can name a metallic chromium coating or a ColorScope named colour; it is not silently normalized to chromium as a material.",
12568
+ "Chrome can name a metallic chromium coating or a ColorScope named color; it is not silently normalized to chromium as a material.",
12517
12569
  crossoverSource("chrome")
12518
12570
  ),
12519
12571
  crossoverAmbiguity(
12520
12572
  "cherry",
12521
12573
  `${TAXONOMY_BASE_URI}/id/material/cherry`,
12522
12574
  "cherry",
12523
- "Cherry can name timber or the ColorScope named colour Cherry; the common name does not prove species or colour.",
12524
- `${crossoverSource("cherry")}; @instruments/colorscope 9.4.0 id "cherry", family red, matching the retired "red-warm-cherry-red" reading's red family`
12575
+ "Cherry can name timber or the ColorScope named color Cherry; the common name does not prove species or color.",
12576
+ `${crossoverSource("cherry")}; @instruments/colorscope 9.4.0 id "cherry", family red, matching the retired "red-warm-cherry-red" meaning's red family`
12525
12577
  ),
12526
12578
  crossoverAmbiguity(
12527
12579
  "chestnut",
12528
12580
  `${TAXONOMY_BASE_URI}/id/material/chestnut`,
12529
12581
  "chestnut",
12530
- "Chestnut can name timber or a ColorScope named colour; neither reading proves species, construction, or appearance.",
12582
+ "Chestnut can name timber or a ColorScope named color; neither meaning proves species, construction, or appearance.",
12531
12583
  crossoverSource("chestnut")
12532
12584
  ),
12533
12585
  crossoverAmbiguity(
12534
12586
  "clay",
12535
12587
  `${TAXONOMY_BASE_URI}/id/material/clay`,
12536
12588
  "clay",
12537
- "Clay can name a fine-grained earthy material or a ColorScope named colour; the word alone proves neither firing nor appearance.",
12589
+ "Clay can name a fine-grained earthy material or a ColorScope named color; the word alone proves neither firing nor appearance.",
12538
12590
  crossoverSource("clay")
12539
12591
  ),
12540
12592
  crossoverAmbiguity(
12541
12593
  "copper",
12542
12594
  `${TAXONOMY_BASE_URI}/id/material/copper`,
12543
12595
  "copper",
12544
- "Copper can name a metal or a ColorScope named colour; colour resemblance does not establish copper content.",
12596
+ "Copper can name a metal or a ColorScope named color; color resemblance does not establish copper content.",
12545
12597
  crossoverSource("copper")
12546
12598
  ),
12547
12599
  crossoverAmbiguity(
12548
12600
  "denim",
12549
12601
  `${TAXONOMY_BASE_URI}/id/material/denim`,
12550
12602
  "denim",
12551
- "Denim can name a woven fabric construction or a ColorScope named colour; denim need not be blue.",
12603
+ "Denim can name a woven fabric construction or a ColorScope named color; denim need not be blue.",
12552
12604
  crossoverSource("denim")
12553
12605
  ),
12554
12606
  crossoverAmbiguity(
12555
12607
  "ebony",
12556
12608
  `${TAXONOMY_BASE_URI}/id/material/ebony`,
12557
12609
  "ebony",
12558
- "Ebony can name traded timber or a ColorScope named colour; the trade name does not prove botanical identity or black colour.",
12610
+ "Ebony can name traded timber or a ColorScope named color; the trade name does not prove botanical identity or black color.",
12559
12611
  crossoverSource("ebony")
12560
12612
  ),
12561
12613
  crossoverAmbiguity(
12562
12614
  "gold",
12563
12615
  `${TAXONOMY_BASE_URI}/id/material/gold`,
12564
12616
  "gold",
12565
- "Gold can name the metallic element or a ColorScope named colour; appearance does not establish composition or coating.",
12617
+ "Gold can name the metallic element or a ColorScope named color; appearance does not establish composition or coating.",
12566
12618
  crossoverSource("gold")
12567
12619
  ),
12568
12620
  crossoverAmbiguity(
12569
12621
  "gunmetal",
12570
12622
  `${TAXONOMY_BASE_URI}/id/material/gunmetal`,
12571
12623
  "gunmetal",
12572
- "Gunmetal can name a casting-alloy family or a ColorScope named colour; grade and appearance remain separate claims.",
12624
+ "Gunmetal can name a casting-alloy family or a ColorScope named color; grade and appearance remain separate claims.",
12573
12625
  crossoverSource("gunmetal")
12574
12626
  ),
12575
12627
  crossoverAmbiguity(
12576
12628
  "iron",
12577
12629
  `${TAXONOMY_BASE_URI}/id/material/iron`,
12578
12630
  "iron",
12579
- "Iron can name the metallic element or a ColorScope named colour; the bare word does not settle material form or appearance.",
12631
+ "Iron can name the metallic element or a ColorScope named color; the bare word does not settle material form or appearance.",
12580
12632
  crossoverSource("iron")
12581
12633
  ),
12582
12634
  crossoverAmbiguity(
12583
12635
  "jade",
12584
12636
  `${TAXONOMY_BASE_URI}/id/material/jade`,
12585
12637
  "jade",
12586
- "Jade can name an umbrella gem material or a ColorScope named colour; jade is not one mineral and need not be green.",
12638
+ "Jade can name an umbrella gem material or a ColorScope named color; jade is not one mineral and need not be green.",
12587
12639
  crossoverSource("jade")
12588
12640
  ),
12589
12641
  crossoverAmbiguity(
12590
12642
  "linen",
12591
12643
  `${TAXONOMY_BASE_URI}/id/material/linen`,
12592
12644
  "linen",
12593
- "Linen can name a flax-derived material or a ColorScope named colour; colour does not establish fibre composition.",
12645
+ "Linen can name a flax-derived material or a ColorScope named color; color does not establish fibre composition.",
12594
12646
  crossoverSource("linen")
12595
12647
  ),
12596
12648
  crossoverAmbiguity(
12597
12649
  "mahogany",
12598
12650
  `${TAXONOMY_BASE_URI}/id/material/mahogany`,
12599
12651
  "mahogany",
12600
- "Mahogany can name commercially grouped timber or a ColorScope named colour; neither reading proves species or appearance.",
12652
+ "Mahogany can name commercially grouped timber or a ColorScope named color; neither meaning proves species or appearance.",
12601
12653
  crossoverSource("mahogany")
12602
12654
  ),
12603
12655
  crossoverAmbiguity(
12604
12656
  "nickel",
12605
12657
  `${TAXONOMY_BASE_URI}/id/material/nickel`,
12606
12658
  "nickel",
12607
- "Nickel can name a bulk metallic material, an electrodeposited finish, or a ColorScope named colour; the bare word does not select among them.",
12659
+ "Nickel can name a bulk metallic material, an electrodeposited finish, or a ColorScope named color; the bare word does not select among them.",
12608
12660
  crossoverSource("nickel"),
12609
12661
  [`${TAXONOMY_BASE_URI}/id/finish/treatment/nickel`]
12610
12662
  ),
@@ -12612,63 +12664,63 @@ var AUTHORED_LEXICAL_ENTRIES = [
12612
12664
  "obsidian",
12613
12665
  `${TAXONOMY_BASE_URI}/id/material/obsidian`,
12614
12666
  "obsidian",
12615
- "Obsidian can name volcanic glass or a ColorScope named colour; the material is not necessarily black.",
12667
+ "Obsidian can name volcanic glass or a ColorScope named color; the material is not necessarily black.",
12616
12668
  crossoverSource("obsidian")
12617
12669
  ),
12618
12670
  crossoverAmbiguity(
12619
12671
  "onyx",
12620
12672
  `${TAXONOMY_BASE_URI}/id/material/onyx`,
12621
12673
  "onyx",
12622
- "Onyx can name commercial architectural stone or a ColorScope named colour; architectural onyx is not necessarily black.",
12674
+ "Onyx can name commercial architectural stone or a ColorScope named color; architectural onyx is not necessarily black.",
12623
12675
  crossoverSource("onyx")
12624
12676
  ),
12625
12677
  crossoverAmbiguity(
12626
12678
  "pewter",
12627
12679
  `${TAXONOMY_BASE_URI}/id/material/pewter`,
12628
12680
  "pewter",
12629
- "Pewter can name a variable tin-alloy family or a ColorScope named colour; composition and appearance remain separate.",
12681
+ "Pewter can name a variable tin-alloy family or a ColorScope named color; composition and appearance remain separate.",
12630
12682
  crossoverSource("pewter")
12631
12683
  ),
12632
12684
  crossoverAmbiguity(
12633
12685
  "platinum",
12634
12686
  `${TAXONOMY_BASE_URI}/id/material/platinum`,
12635
12687
  "platinum",
12636
- "Platinum can name a metal or a ColorScope named colour; solid metal, plating, and appearance require separate evidence.",
12688
+ "Platinum can name a metal or a ColorScope named color; solid metal, plating, and appearance require separate evidence.",
12637
12689
  crossoverSource("platinum")
12638
12690
  ),
12639
12691
  crossoverAmbiguity(
12640
12692
  "rosewood",
12641
12693
  `${TAXONOMY_BASE_URI}/id/material/rosewood`,
12642
12694
  "rosewood",
12643
- "Rosewood can name traded timber or a ColorScope named colour; species and appearance remain separate claims.",
12695
+ "Rosewood can name traded timber or a ColorScope named color; species and appearance remain separate claims.",
12644
12696
  crossoverSource("rosewood")
12645
12697
  ),
12646
12698
  crossoverAmbiguity(
12647
12699
  "silver",
12648
12700
  `${TAXONOMY_BASE_URI}/id/material/silver`,
12649
12701
  "silver",
12650
- "Silver can name the metallic element or a ColorScope named colour; appearance does not establish elemental silver.",
12702
+ "Silver can name the metallic element or a ColorScope named color; appearance does not establish elemental silver.",
12651
12703
  crossoverSource("silver")
12652
12704
  ),
12653
12705
  crossoverAmbiguity(
12654
12706
  "slate",
12655
12707
  `${TAXONOMY_BASE_URI}/id/material/slate`,
12656
12708
  "slate-gray",
12657
- "Slate can name dimension stone or the ColorScope named colour Slate Gray; neither reading implies the other.",
12658
- `${crossoverSource("slate")}; @instruments/colorscope 9.4.0 offers "slate-blue" (family blue) and "slate-gray" (family gray); "slate-gray" decided, matching the retired "gray-muted-slate" reading's gray family`
12709
+ "Slate can name dimension stone or the ColorScope named color Slate Gray; neither meaning implies the other.",
12710
+ `${crossoverSource("slate")}; @instruments/colorscope 9.4.0 offers "slate-blue" (family blue) and "slate-gray" (family gray); "slate-gray" decided, matching the retired "gray-muted-slate" meaning's gray family`
12659
12711
  ),
12660
12712
  crossoverAmbiguity(
12661
12713
  "steel",
12662
12714
  `${TAXONOMY_BASE_URI}/id/material/steel`,
12663
12715
  "steel",
12664
- "Steel can name an iron-carbon alloy family or a ColorScope named colour; appearance does not identify a steel grade.",
12716
+ "Steel can name an iron-carbon alloy family or a ColorScope named color; appearance does not identify a steel grade.",
12665
12717
  crossoverSource("steel")
12666
12718
  ),
12667
12719
  crossoverAmbiguity(
12668
12720
  "stone",
12669
12721
  `${TAXONOMY_BASE_URI}/id/material/stone`,
12670
12722
  "stone",
12671
- "Stone can name a specific building material, a retrieval-oriented material family, or a ColorScope named colour; none is a consumer route.",
12723
+ "Stone can name a specific building material, a retrieval-oriented material family, or a ColorScope named color; none is a consumer route.",
12672
12724
  crossoverSource("stone"),
12673
12725
  [`${TAXONOMY_BASE_URI}/id/material-family/stone`]
12674
12726
  ),
@@ -12676,11 +12728,11 @@ var AUTHORED_LEXICAL_ENTRIES = [
12676
12728
  "terracotta",
12677
12729
  `${TAXONOMY_BASE_URI}/id/material/terracotta`,
12678
12730
  "terracotta",
12679
- "Terracotta can name a fired-clay material or a ColorScope named colour; firing and composition do not establish orange appearance.",
12731
+ "Terracotta can name a fired-clay material or a ColorScope named color; firing and composition do not establish orange appearance.",
12680
12732
  crossoverSource("terracotta")
12681
12733
  ),
12682
12734
  {
12683
- explanation: "Brick can name fired clay masonry material or a ColorScope named colour; the material need not be red and the colour is not a substance.",
12735
+ explanation: "Brick can name fired clay masonry material or a ColorScope named color; the material need not be red and the color is not a substance.",
12684
12736
  governance: lexicalGovernance(
12685
12737
  AMBIGUITY_GOVERNANCE,
12686
12738
  {
@@ -12690,21 +12742,21 @@ var AUTHORED_LEXICAL_ENTRIES = [
12690
12742
  },
12691
12743
  REVIEW_LIFECYCLE
12692
12744
  ),
12693
- outcome: "ambiguous",
12694
- phrase: "brick",
12695
- readings: [
12745
+ meanings: [
12696
12746
  reviewedTaxonomy("material/brick"),
12697
12747
  colorScope("brick", NAMED_COLOR_REFERENCE_KIND)
12698
- ]
12748
+ ],
12749
+ outcome: "ambiguous",
12750
+ phrase: "brick"
12699
12751
  },
12700
- // Colour-material crossovers found by comparing every material label with the installed
12701
- // ColorScope names on 2026-09-22. No retrieval evidence orders either reading, so each keeps
12702
- // both without a default or a role, as brick does.
12752
+ // Color-material crossovers found by comparing every material label with the installed
12753
+ // ColorScope names on 2026-09-22. No retrieval evidence orders either meaning, so each keeps
12754
+ // both without a default or a meaningPriority, as brick does.
12703
12755
  referencedCrossover(
12704
12756
  "porcelain",
12705
12757
  "material/porcelain",
12706
12758
  "porcelain",
12707
- "Porcelain can name a vitrified ceramic body or a ColorScope named colour; the colour does not establish the body.",
12759
+ "Porcelain can name a vitrified ceramic body or a ColorScope named color; the color does not establish the body.",
12708
12760
  "ISO 13006:2018; ANSI A137.1",
12709
12761
  PUBLISHED_V1_BASELINE
12710
12762
  ),
@@ -12712,7 +12764,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12712
12764
  "sand",
12713
12765
  "material/sand",
12714
12766
  "sand",
12715
- "Sand can name loose mineral grains, a ColorScope named colour, or the beige colour family ColorScope lists it under; none implies another.",
12767
+ "Sand can name loose mineral grains, a ColorScope named color, or the beige color family ColorScope lists it under; none implies another.",
12716
12768
  "ISO 14688-1:2017",
12717
12769
  PUBLISHED_V1_BASELINE,
12718
12770
  [colorScope("beige", COLOR_FAMILY_REFERENCE_KIND)]
@@ -12721,223 +12773,223 @@ var AUTHORED_LEXICAL_ENTRIES = [
12721
12773
  "camel",
12722
12774
  "material/camel-hair",
12723
12775
  "camel",
12724
- "Camel can name hair from a camel or a ColorScope named colour; the fibre need not be that colour.",
12776
+ "Camel can name hair from a camel or a ColorScope named color; the fibre need not be that color.",
12725
12777
  "Regulation (EU) No 1007/2011 Annex I row 2"
12726
12778
  ),
12727
12779
  referencedCrossover(
12728
12780
  "ash",
12729
12781
  "material/ash",
12730
12782
  "ash",
12731
- "Ash can name timber of the genus Fraxinus or the ColorScope named colour Ash; neither reading implies the other.",
12732
- `USDA Wood Handbook (2021), chapter 2; @instruments/colorscope 9.4.0 id "ash", family gray, matching the retired "gray-light-ash-gray" reading's gray family`
12783
+ "Ash can name timber of the genus Fraxinus or the ColorScope named color Ash; neither meaning implies the other.",
12784
+ `USDA Wood Handbook (2021), chapter 2; @instruments/colorscope 9.4.0 id "ash", family gray, matching the retired "gray-light-ash-gray" meaning's gray family`
12733
12785
  ),
12734
12786
  referencedCrossover(
12735
12787
  "eucalyptus",
12736
12788
  "material/eucalyptus",
12737
12789
  "eucalyptus",
12738
- "Eucalyptus can name timber of the genus Eucalyptus or a ColorScope named colour; neither reading implies the other.",
12790
+ "Eucalyptus can name timber of the genus Eucalyptus or a ColorScope named color; neither meaning implies the other.",
12739
12791
  "EN 13556:2003"
12740
12792
  ),
12741
12793
  referencedCrossover(
12742
12794
  "pine",
12743
12795
  "material/pine",
12744
12796
  "pine-green",
12745
- "Pine can name timber of the genus Pinus or the ColorScope named colour Pine Green; neither reading implies the other.",
12746
- `USDA Wood Handbook (2021), chapter 2; @instruments/colorscope 9.4.0 has no flat "pine" id, so id "pine-green" (family green), matching the retired "green-deep-pine" reading's green family`
12797
+ "Pine can name timber of the genus Pinus or the ColorScope named color Pine Green; neither meaning implies the other.",
12798
+ `USDA Wood Handbook (2021), chapter 2; @instruments/colorscope 9.4.0 has no flat "pine" id, so id "pine-green" (family green), matching the retired "green-deep-pine" meaning's green family`
12747
12799
  ),
12748
12800
  // ColorScope 9.4.0 crossovers, found by re-running the 2026-09-22 comparison against the
12749
12801
  // installed 9.4.0 release. `chromium` reads against ColorScope's own alias, not a separate
12750
- // colour: 9.4.0's `chrome` colour carries the alias "Chromium", so the material label collides
12751
- // with `chrome`'s identity, not with a colour named `chromium`. It is a different phrase from
12752
- // `chrome` itself, whose two taxonomy readings (a finish and a material) are unrelated to
12802
+ // color: 9.4.0's `chrome` color carries the alias "Chromium", so the material label collides
12803
+ // with `chrome`'s identity, not with a color named `chromium`. It is a different phrase from
12804
+ // `chrome` itself, whose two taxonomy meanings (a finish and a material) are unrelated to
12753
12805
  // `material/chromium`.
12754
12806
  colorscope940Crossover(
12755
12807
  "granite",
12756
12808
  "material/granite",
12757
12809
  "granite",
12758
- "Granite can name the quarried igneous rock or the ColorScope named colour Granite; neither reading implies the other.",
12810
+ "Granite can name the quarried igneous rock or the ColorScope named color Granite; neither meaning implies the other.",
12759
12811
  "Wikidata Q41177 granite, https://www.wikidata.org/wiki/Q41177"
12760
12812
  ),
12761
12813
  colorscope940Crossover(
12762
12814
  "sandstone",
12763
12815
  "material/sandstone",
12764
12816
  "sandstone",
12765
- "Sandstone can name the quarried sedimentary rock or the ColorScope named colour Sandstone; neither reading implies the other.",
12817
+ "Sandstone can name the quarried sedimentary rock or the ColorScope named color Sandstone; neither meaning implies the other.",
12766
12818
  "Wikidata Q13085 sandstone, https://www.wikidata.org/wiki/Q13085"
12767
12819
  ),
12768
12820
  colorscope940Crossover(
12769
12821
  "basalt",
12770
12822
  "material/basalt",
12771
12823
  "basalt",
12772
- "Basalt can name the quarried volcanic rock or the ColorScope named colour Basalt; neither reading implies the other.",
12824
+ "Basalt can name the quarried volcanic rock or the ColorScope named color Basalt; neither meaning implies the other.",
12773
12825
  "Wikidata Q43338 basalt, https://www.wikidata.org/wiki/Q43338"
12774
12826
  ),
12775
12827
  colorscope940Crossover(
12776
12828
  "soapstone",
12777
12829
  "material/soapstone",
12778
12830
  "soapstone",
12779
- "Soapstone can name the quarried talc-rich rock or the ColorScope named colour Soapstone; neither reading implies the other.",
12831
+ "Soapstone can name the quarried talc-rich rock or the ColorScope named color Soapstone; neither meaning implies the other.",
12780
12832
  "Wikidata Q707896 soapstone, https://www.wikidata.org/wiki/Q707896"
12781
12833
  ),
12782
12834
  colorscope940Crossover(
12783
12835
  "hemp",
12784
12836
  "material/hemp",
12785
12837
  "hemp",
12786
- "Hemp can name the Cannabis sativa bast fibre or the ColorScope named colour Hemp; neither reading implies the other.",
12838
+ "Hemp can name the Cannabis sativa bast fibre or the ColorScope named color Hemp; neither meaning implies the other.",
12787
12839
  "Wikidata Q13414920 hemp fiber, https://www.wikidata.org/wiki/Q13414920"
12788
12840
  ),
12789
12841
  colorscope940Crossover(
12790
12842
  "rattan",
12791
12843
  "material/rattan",
12792
12844
  "rattan",
12793
- "Rattan can name the climbing-palm stem material or the ColorScope named colour Rattan; neither reading implies the other.",
12845
+ "Rattan can name the climbing-palm stem material or the ColorScope named color Rattan; neither meaning implies the other.",
12794
12846
  "Wikidata Q323021 rattan, https://www.wikidata.org/wiki/Q323021"
12795
12847
  ),
12796
12848
  colorscope940Crossover(
12797
12849
  "gypsum",
12798
12850
  "material/gypsum",
12799
12851
  "gypsum",
12800
- "Gypsum can name the mineral calcium sulfate dihydrate or the ColorScope named colour Gypsum; neither reading implies the other.",
12852
+ "Gypsum can name the mineral calcium sulfate dihydrate or the ColorScope named color Gypsum; neither meaning implies the other.",
12801
12853
  "EN 13279-1:2008"
12802
12854
  ),
12803
12855
  colorscope940Crossover(
12804
12856
  "cement",
12805
12857
  "material/cement",
12806
12858
  "cement",
12807
- "Cement can name the hydraulic binder or the ColorScope named colour Cement; neither reading implies the other.",
12859
+ "Cement can name the hydraulic binder or the ColorScope named color Cement; neither meaning implies the other.",
12808
12860
  "EN 197-1:2011"
12809
12861
  ),
12810
12862
  colorscope940Crossover(
12811
12863
  "carbon black",
12812
12864
  "material/carbon-black",
12813
12865
  "carbon-black",
12814
- "Carbon black can name the pigment and reinforcing filler or the ColorScope named colour Carbon Black; neither reading implies the other.",
12866
+ "Carbon black can name the pigment and reinforcing filler or the ColorScope named color Carbon Black; neither meaning implies the other.",
12815
12867
  "CAS Registry 1333-86-4"
12816
12868
  ),
12817
12869
  colorscope940Crossover(
12818
12870
  "titanium white",
12819
12871
  "material/titanium-dioxide",
12820
12872
  "titanium-white",
12821
- "Titanium white can name the titanium dioxide pigment or the ColorScope named colour Titanium White; neither reading implies the other.",
12873
+ "Titanium white can name the titanium dioxide pigment or the ColorScope named color Titanium White; neither meaning implies the other.",
12822
12874
  "CAS Registry 13463-67-7"
12823
12875
  ),
12824
12876
  colorscope940Crossover(
12825
12877
  "chromium",
12826
12878
  "material/chromium",
12827
12879
  "chrome",
12828
- 'Chromium can name the metallic element or the ColorScope named colour Chrome, of which "Chromium" is an alias; neither reading implies the other.',
12880
+ 'Chromium can name the metallic element or the ColorScope named color Chrome, of which "Chromium" is an alias; neither meaning implies the other.',
12829
12881
  "CAS Registry 7440-47-3"
12830
12882
  ),
12831
12883
  // `shell` and `seashell` are one material term (`material/shell`) with two label forms, and
12832
- // 9.4.0 gives each its own, different colour: `shell` collides with Shell Pink, `seashell` with
12833
- // the separate colour Seashell. Two phrases, not one, because the two labels now resolve to two
12834
- // different colours.
12884
+ // 9.4.0 gives each its own, different color: `shell` collides with Shell Pink, `seashell` with
12885
+ // the separate color Seashell. Two phrases, not one, because the two labels now resolve to two
12886
+ // different colors.
12835
12887
  colorscope940Crossover(
12836
12888
  "shell",
12837
12889
  "material/shell",
12838
12890
  "shell-pink",
12839
- "Shell can name the mollusc-shell material or the ColorScope named colour Shell Pink; neither reading implies the other.",
12891
+ "Shell can name the mollusc-shell material or the ColorScope named color Shell Pink; neither meaning implies the other.",
12840
12892
  "Wikidata Q213096 seashell, https://www.wikidata.org/wiki/Q213096"
12841
12893
  ),
12842
12894
  colorscope940Crossover(
12843
12895
  "seashell",
12844
12896
  "material/shell",
12845
12897
  "seashell",
12846
- "Seashell can name the mollusc-shell material or the ColorScope named colour Seashell; neither reading implies the other.",
12898
+ "Seashell can name the mollusc-shell material or the ColorScope named color Seashell; neither meaning implies the other.",
12847
12899
  "Wikidata Q213096 seashell, https://www.wikidata.org/wiki/Q213096"
12848
12900
  ),
12849
12901
  colorscope940Crossover(
12850
12902
  "cashmere",
12851
12903
  "material/cashmere",
12852
12904
  "cashmere",
12853
- "Cashmere can name the goat-hair fibre or the ColorScope named colour Cashmere; neither reading implies the other.",
12905
+ "Cashmere can name the goat-hair fibre or the ColorScope named color Cashmere; neither meaning implies the other.",
12854
12906
  "Regulation (EU) No 1007/2011 Annex I row 2"
12855
12907
  ),
12856
12908
  colorscope940Crossover(
12857
12909
  "hickory",
12858
12910
  "material/hickory",
12859
12911
  "hickory",
12860
- "Hickory can name timber of the genus Carya or the ColorScope named colour Hickory; neither reading implies the other.",
12912
+ "Hickory can name timber of the genus Carya or the ColorScope named color Hickory; neither meaning implies the other.",
12861
12913
  WOOD_HANDBOOK5
12862
12914
  ),
12863
12915
  colorscope940Crossover(
12864
12916
  "pear",
12865
12917
  "material/pear",
12866
12918
  "pear",
12867
- "Pear can name timber of Pyrus communis or the ColorScope named colour Pear; neither reading implies the other.",
12919
+ "Pear can name timber of Pyrus communis or the ColorScope named color Pear; neither meaning implies the other.",
12868
12920
  WOOD_HANDBOOK5
12869
12921
  ),
12870
12922
  colorscope940Crossover(
12871
12923
  "pecan",
12872
12924
  "material/carya-illinoinensis",
12873
12925
  "pecan",
12874
- "Pecan can name timber of Carya illinoinensis or the ColorScope named colour Pecan; neither reading implies the other.",
12926
+ "Pecan can name timber of Carya illinoinensis or the ColorScope named color Pecan; neither meaning implies the other.",
12875
12927
  WOOD_HANDBOOK5
12876
12928
  ),
12877
12929
  colorscope940Crossover(
12878
12930
  "cedar",
12879
12931
  "material/cedar",
12880
12932
  "cedar",
12881
- "Cedar can name softwood traded as cedar or the ColorScope named colour Cedar; neither reading implies the other.",
12933
+ "Cedar can name softwood traded as cedar or the ColorScope named color Cedar; neither meaning implies the other.",
12882
12934
  WOOD_HANDBOOK5
12883
12935
  ),
12884
12936
  colorscope940Crossover(
12885
12937
  "redwood",
12886
12938
  "material/redwood",
12887
12939
  "redwood",
12888
- "Redwood can name timber of Sequoia sempervirens or the ColorScope named colour Redwood; neither reading implies the other.",
12940
+ "Redwood can name timber of Sequoia sempervirens or the ColorScope named color Redwood; neither meaning implies the other.",
12889
12941
  WOOD_HANDBOOK5
12890
12942
  ),
12891
12943
  // Quartz and melamine each name two materials in one word, and the trade uses the word for one
12892
12944
  // of them first: `quartz` is the engineered surfacing before the mineral, `melamine` the faced
12893
- // board before the resin. Both readings are on the material axis, so the ordering is a default
12894
- // and a role, never a colour-or-material context. Decided 2026-09-22 and recorded in ADR 0007.
12945
+ // board before the resin. Both meanings are on the material axis, so the ordering is a default
12946
+ // and a meaningPriority, never a color-or-material context. Decided 2026-09-22 and recorded in ADR 0007.
12895
12947
  //
12896
12948
  // The evidence, read from the consumer's stored material values on 2026-09-22 and kept here
12897
12949
  // because a count is not ours to publish: of 1,490 stored quartz rows, 801 sat on large-format
12898
12950
  // slab, 102 on solid surface and 98 on natural stone; of 2,816 stored melamine rows, 2,650 sat on
12899
12951
  // laminate surface.
12900
12952
  {
12901
- defaultTarget: ENGINEERED_QUARTZ_SURFACING,
12953
+ defaultMeaning: ENGINEERED_QUARTZ_SURFACING,
12902
12954
  explanation: "Quartz can name the engineered quartz surfacing sold for worktops or the mineral silicon dioxide; the trade means the surfacing first, and neither is a child of the other.",
12903
12955
  governance: lexicalGovernance(
12904
- ORDERED_READING_GOVERNANCE,
12956
+ MEANING_PRIORITY_GOVERNANCE,
12905
12957
  {
12906
12958
  basis: "evidenced",
12907
12959
  snapshot: HIERARCHY_REVIEW_DATE,
12908
- source: `${ORDERED_READING_EVIDENCE}, quartz rows by product type; EN 14618 and EN 15285 (agglomerated stone); CAS 14808-60-7 (quartz)`
12960
+ source: `${MEANING_PRIORITY_EVIDENCE}, quartz rows by product type; EN 14618 and EN 15285 (agglomerated stone); CAS 14808-60-7 (quartz)`
12909
12961
  },
12910
12962
  HIERARCHY_REVIEW_LIFECYCLE
12911
12963
  ),
12964
+ meanings: [ENGINEERED_QUARTZ_SURFACING, QUARTZ_MINERAL],
12912
12965
  outcome: "ambiguous",
12913
- phrase: "quartz",
12914
- readings: [ENGINEERED_QUARTZ_SURFACING, QUARTZ_MINERAL]
12966
+ phrase: "quartz"
12915
12967
  },
12916
12968
  {
12917
- defaultTarget: MELAMINE_BOARD,
12969
+ defaultMeaning: MELAMINE_BOARD,
12918
12970
  explanation: "Melamine can name melamine-faced board, the panel, or melamine-formaldehyde resin, the polymer its facing is made of; joinery and retail mean the board first.",
12919
12971
  governance: lexicalGovernance(
12920
- ORDERED_READING_GOVERNANCE,
12972
+ MEANING_PRIORITY_GOVERNANCE,
12921
12973
  {
12922
12974
  basis: "evidenced",
12923
12975
  snapshot: HIERARCHY_REVIEW_DATE,
12924
- source: `${ORDERED_READING_EVIDENCE}, melamine rows by product type; EN 14322 (melamine faced boards); ISO 1043-1 MF (melamine-formaldehyde resin)`
12976
+ source: `${MEANING_PRIORITY_EVIDENCE}, melamine rows by product type; EN 14322 (melamine faced boards); ISO 1043-1 MF (melamine-formaldehyde resin)`
12925
12977
  },
12926
12978
  HIERARCHY_REVIEW_LIFECYCLE
12927
12979
  ),
12980
+ meanings: [MELAMINE_BOARD, MELAMINE_RESIN],
12928
12981
  outcome: "ambiguous",
12929
- phrase: "melamine",
12930
- readings: [MELAMINE_BOARD, MELAMINE_RESIN]
12982
+ phrase: "melamine"
12931
12983
  },
12932
- // Plaster: one governed material reading here. ColorScope separately lists `plaster` as an
12984
+ // Plaster: one governed material meaning here. ColorScope separately lists `plaster` as an
12933
12985
  // alias of its Light Taupe tone band, and a tone band has no reference kind in this corpus, so
12934
- // the colour reading cannot be a target without inventing one. The mosaic precedent applies:
12935
- // publish the domain reading and say that consumers must union the external colour alias. If a
12986
+ // the color meaning cannot be a target without inventing one. The mosaic precedent applies:
12987
+ // publish the domain meaning and say that consumers must union the external color alias. If a
12936
12988
  // tone-band reference kind is added, rewrite this as an ambiguity.
12937
12989
  {
12938
- explanation: "Plaster has one governed material reading in this corpus. ColorScope separately lists plaster as an alias of its Light Taupe tone band; consumers must union that external colour reading with this one rather than let either shadow the other.",
12990
+ explanation: "Plaster has one governed material meaning in this corpus. ColorScope separately lists plaster as an alias of its Light Taupe tone band; consumers must union that external color meaning with this one rather than let either shadow the other.",
12939
12991
  governance: lexicalGovernance(
12940
- "Taxonomy records the referenced material reading without assigning a consumer route; the ColorScope tone-band alias has no reference kind in this corpus and is declared rather than minted.",
12992
+ "Taxonomy records the referenced material meaning without assigning a consumer route; the ColorScope tone-band alias has no reference kind in this corpus and is declared rather than minted.",
12941
12993
  {
12942
12994
  basis: "referenced",
12943
12995
  snapshot: REVIEW_DATE12,
@@ -12953,7 +13005,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12953
13005
  "cotton",
12954
13006
  `${TAXONOMY_BASE_URI}/id/material/cotton`,
12955
13007
  "cotton",
12956
- "Cotton can name the plant fibre or the ColorScope named colour Cotton; fibre identity does not establish weave, blend, dye, or finish, and neither reading implies the other.",
13008
+ "Cotton can name the plant fibre or the ColorScope named color Cotton; fibre identity does not establish weave, blend, dye, or finish, and neither meaning implies the other.",
12957
13009
  crossoverSource("cotton")
12958
13010
  ),
12959
13011
  crossoverTaxonomyAmbiguity(
@@ -12962,7 +13014,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12962
13014
  `${TAXONOMY_BASE_URI}/id/material-family/leather`,
12963
13015
  `${TAXONOMY_BASE_URI}/id/material/leather`
12964
13016
  ],
12965
- "Leather names both a retrieval-oriented material family and a specific hide-derived material; neither reading establishes animal, layer, tanning, coating, or finish, and ColorScope 7.3 has no exact named-colour identity.",
13017
+ "Leather names both a retrieval-oriented material family and a specific hide-derived material; neither meaning establishes animal, layer, tanning, coating, or finish, and ColorScope 7.3 has no exact named-color identity.",
12966
13018
  crossoverSource("leather")
12967
13019
  ),
12968
13020
  crossoverTaxonomyAmbiguity(
@@ -12971,46 +13023,46 @@ var AUTHORED_LEXICAL_ENTRIES = [
12971
13023
  `${TAXONOMY_BASE_URI}/id/material-family/wood`,
12972
13024
  `${TAXONOMY_BASE_URI}/id/material/wood`
12973
13025
  ],
12974
- "Wood names both a retrieval-oriented material family and a specific lignocellulosic material; neither reading establishes species, construction, stain, oil, or coating, and ColorScope 7.3 has no exact named-colour identity.",
13026
+ "Wood names both a retrieval-oriented material family and a specific lignocellulosic material; neither meaning establishes species, construction, stain, oil, or coating, and ColorScope 7.3 has no exact named-color identity.",
12975
13027
  crossoverSource("wood")
12976
13028
  ),
12977
13029
  crossoverAmbiguity(
12978
13030
  "jute",
12979
13031
  `${TAXONOMY_BASE_URI}/id/material/jute`,
12980
13032
  "jute",
12981
- "Jute can name the plant bast fibre or the ColorScope named colour Jute; construction, blend, treatment, and colour remain unspecified, and neither reading implies the other.",
13033
+ "Jute can name the plant bast fibre or the ColorScope named color Jute; construction, blend, treatment, and color remain unspecified, and neither meaning implies the other.",
12982
13034
  crossoverSource("jute")
12983
13035
  ),
12984
13036
  crossoverAmbiguity(
12985
13037
  "sisal",
12986
13038
  `${TAXONOMY_BASE_URI}/id/material/sisal`,
12987
13039
  "sisal",
12988
- "Sisal can name the plant fibre or the ColorScope named colour Sisal; fibre and products made from it remain distinct, and neither reading implies the other.",
13040
+ "Sisal can name the plant fibre or the ColorScope named color Sisal; fibre and products made from it remain distinct, and neither meaning implies the other.",
12989
13041
  crossoverSource("sisal")
12990
13042
  ),
12991
13043
  crossoverEquivalent(
12992
13044
  "cork",
12993
13045
  `${TAXONOMY_BASE_URI}/id/material/cork`,
12994
- "Cork has one governed material reading in this corpus; natural cork, agglomerate, backing, veneer, and cork-look appearance remain distinct, and ColorScope 7.3 has no exact named-colour identity.",
13046
+ "Cork has one governed material meaning in this corpus; natural cork, agglomerate, backing, veneer, and cork-look appearance remain distinct, and ColorScope 7.3 has no exact named-color identity.",
12995
13047
  crossoverSource("cork")
12996
13048
  ),
12997
13049
  crossoverEquivalent(
12998
13050
  "wool",
12999
13051
  `${TAXONOMY_BASE_URI}/id/material/wool`,
13000
- "Wool has one governed material reading in this corpus; species, grade, blend, construction, and finish remain unspecified, and ColorScope 7.3 has no exact named-colour identity.",
13052
+ "Wool has one governed material meaning in this corpus; species, grade, blend, construction, and finish remain unspecified, and ColorScope 7.3 has no exact named-color identity.",
13001
13053
  crossoverSource("wool")
13002
13054
  ),
13003
13055
  crossoverEquivalent(
13004
13056
  "suede",
13005
13057
  `${TAXONOMY_BASE_URI}/id/material/suede`,
13006
- "Suede has one governed leather-material reading in this corpus; it does not establish a suede-look finish on another substrate, and ColorScope 7.3 has no exact named-colour identity.",
13058
+ "Suede has one governed leather-material meaning in this corpus; it does not establish a suede-look finish on another substrate, and ColorScope 7.3 has no exact named-color identity.",
13007
13059
  crossoverSource("suede")
13008
13060
  ),
13009
13061
  crossoverAmbiguity(
13010
13062
  "concrete",
13011
13063
  `${TAXONOMY_BASE_URI}/id/material-family/concrete`,
13012
13064
  "concrete",
13013
- "Concrete names both a retrieval-oriented material family and a specific cement-and-aggregate composite, or the ColorScope named colour Concrete; neither reading establishes mix, reinforcement, coating, polish, or imitation, and none implies another.",
13065
+ "Concrete names both a retrieval-oriented material family and a specific cement-and-aggregate composite, or the ColorScope named color Concrete; neither meaning establishes mix, reinforcement, coating, polish, or imitation, and none implies another.",
13014
13066
  crossoverSource("concrete"),
13015
13067
  [`${TAXONOMY_BASE_URI}/id/material/concrete`]
13016
13068
  ),
@@ -13018,22 +13070,22 @@ var AUTHORED_LEXICAL_ENTRIES = [
13018
13070
  "travertine",
13019
13071
  `${TAXONOMY_BASE_URI}/id/material/travertine`,
13020
13072
  "travertine",
13021
- "Travertine can name the dimension stone or the ColorScope named colour Travertine; quarry, grade, fill, cut, and surface treatment remain unspecified, and neither reading implies the other.",
13073
+ "Travertine can name the dimension stone or the ColorScope named color Travertine; quarry, grade, fill, cut, and surface treatment remain unspecified, and neither meaning implies the other.",
13022
13074
  crossoverSource("travertine")
13023
13075
  ),
13024
13076
  crossoverEquivalent(
13025
13077
  "marble",
13026
13078
  `${TAXONOMY_BASE_URI}/id/material/marble`,
13027
- "Marble has one governed commercial dimension-stone reading in this corpus; its scientific and commercial boundaries remain explicit, and ColorScope 7.3 has no exact named-colour identity.",
13079
+ "Marble has one governed commercial dimension-stone meaning in this corpus; its scientific and commercial boundaries remain explicit, and ColorScope 7.3 has no exact named-color identity.",
13028
13080
  crossoverSource("marble")
13029
13081
  ),
13030
13082
  {
13031
13083
  // Written inline rather than through `crossoverAmbiguity`, which stamps a fixed evidenced
13032
13084
  // snapshot: limestone was introduced later than the rest of this batch (2026-09-01, ADR-dated)
13033
- // and keeps that date now that ColorScope 9.4.0 gives it a colour reading too.
13034
- explanation: "Limestone can name the carbonate stone or the ColorScope named colour Limestone; formation, quarry, grade, cut, finish, and similarly named paint identities remain separate, and neither reading implies the other.",
13085
+ // and keeps that date now that ColorScope 9.4.0 gives it a color meaning too.
13086
+ explanation: "Limestone can name the carbonate stone or the ColorScope named color Limestone; formation, quarry, grade, cut, finish, and similarly named paint identities remain separate, and neither meaning implies the other.",
13035
13087
  governance: lexicalGovernance(
13036
- "Taxonomy preserves the evidenced readings without assigning a default, role, contextual preference, or consumer route.",
13088
+ "Taxonomy preserves the evidenced meanings without assigning a default, meaning priority, contextual preference, or consumer route.",
13037
13089
  {
13038
13090
  basis: "evidenced",
13039
13091
  snapshot: LIMESTONE_INTRODUCED,
@@ -13045,48 +13097,48 @@ var AUTHORED_LEXICAL_ENTRIES = [
13045
13097
  status: "active"
13046
13098
  }
13047
13099
  ),
13048
- outcome: "ambiguous",
13049
- phrase: "limestone",
13050
- readings: [
13100
+ meanings: [
13051
13101
  {
13052
13102
  authority: "taxonomy",
13053
13103
  uri: `${TAXONOMY_BASE_URI}/id/material/limestone`
13054
13104
  },
13055
13105
  colorScope("limestone", NAMED_COLOR_REFERENCE_KIND)
13056
- ]
13106
+ ],
13107
+ outcome: "ambiguous",
13108
+ phrase: "limestone"
13057
13109
  },
13058
13110
  crossoverAmbiguity(
13059
13111
  "oak",
13060
13112
  `${TAXONOMY_BASE_URI}/id/material/oak`,
13061
13113
  "oak",
13062
- "Oak can name the timber species group or the ColorScope named colour Oak; species group, cut, stain, coating, and appearance remain distinct, and neither reading implies the other.",
13114
+ "Oak can name the timber species group or the ColorScope named color Oak; species group, cut, stain, coating, and appearance remain distinct, and neither meaning implies the other.",
13063
13115
  crossoverSource("oak")
13064
13116
  ),
13065
13117
  crossoverAmbiguity(
13066
13118
  "teak",
13067
13119
  `${TAXONOMY_BASE_URI}/id/material/teak`,
13068
13120
  "teak",
13069
- "Teak can name the timber or the ColorScope named colour Teak; timber, finish, and colour remain distinct, and neither reading implies the other.",
13121
+ "Teak can name the timber or the ColorScope named color Teak; timber, finish, and color remain distinct, and neither meaning implies the other.",
13070
13122
  crossoverSource("teak")
13071
13123
  ),
13072
13124
  {
13073
13125
  contextualPreferences: [
13074
13126
  { context: "material", target: WALNUT_MATERIAL },
13075
- { context: "colour", target: WALNUT_COLOUR }
13127
+ { context: "color", target: WALNUT_COLOUR }
13076
13128
  ],
13077
- defaultTarget: WALNUT_MATERIAL,
13078
- explanation: "Walnut can name wood from Juglans trees or a brown colour reading. Neither meaning is a child of the other.",
13129
+ defaultMeaning: WALNUT_MATERIAL,
13130
+ explanation: "Walnut can name wood from Juglans trees or a brown color meaning. Neither meaning is a child of the other.",
13079
13131
  governance: lexicalGovernance(
13080
- "The two readings are deliberately separate and context may select only the preference declared here.",
13132
+ "The two meanings are deliberately separate and context may select only the preference declared here.",
13081
13133
  {
13082
13134
  basis: "evidenced",
13083
13135
  snapshot: PUBLISHED_V1_BASELINE,
13084
13136
  source: crossoverSource("walnut")
13085
13137
  }
13086
13138
  ),
13139
+ meanings: [WALNUT_MATERIAL, WALNUT_COLOUR],
13087
13140
  outcome: "ambiguous",
13088
- phrase: "walnut",
13089
- readings: [WALNUT_MATERIAL, WALNUT_COLOUR]
13141
+ phrase: "walnut"
13090
13142
  },
13091
13143
  // `application.wall-backsplash` is vendored in `dictionaries.ts`, whose tests deep-equal the
13092
13144
  // authoring tuples, so the British spelling is an authored equivalent rather than an altLabel.
@@ -13101,7 +13153,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13101
13153
  phrase: "splashback",
13102
13154
  target: reviewedTaxonomy("application/wall-backsplash")
13103
13155
  },
13104
- // Benchtop takes the same three readings `countertop` resolves to by inference.
13156
+ // Benchtop takes the same three meanings `countertop` resolves to by inference.
13105
13157
  {
13106
13158
  explanation: "Benchtop is the Australian and New Zealand name for a countertop or worktop; like those words it can name the application, the installed joinery element, or the purchasable product, and the word settles none of them.",
13107
13159
  governance: lexicalGovernance(
@@ -13109,74 +13161,69 @@ var AUTHORED_LEXICAL_ENTRIES = [
13109
13161
  { basis: "authored", source: REVIEW_SOURCE9 },
13110
13162
  REVIEW_LIFECYCLE
13111
13163
  ),
13112
- outcome: "ambiguous",
13113
- phrase: "benchtop",
13114
- readings: [
13164
+ meanings: [
13115
13165
  reviewedTaxonomy("application/countertop"),
13116
13166
  reviewedTaxonomy("element/worktop"),
13117
13167
  reviewedTaxonomy("product-category/countertop")
13118
- ]
13168
+ ],
13169
+ outcome: "ambiguous",
13170
+ phrase: "benchtop"
13119
13171
  },
13120
13172
  // TAX-57 unit-shape compounds. Each names two governed shapes in one phrase, which the current
13121
- // lexical contract cannot express as a single multi-target reading, so the alternatives are kept
13173
+ // lexical contract cannot express as a single multi-target meaning, so the alternatives are kept
13122
13174
  // as an explicit ambiguity or, where one alternative is already an alt label of the other, an
13123
- // equivalent - never a silently chosen shape.
13175
+ // equivalent - never a silently chosen shape. "round & oval" is an equivalent of the broad
13176
+ // `round-or-oval` term, which says exactly that a unit is round or oval without choosing (ADR 0012).
13124
13177
  {
13125
- defaultTarget: {
13178
+ defaultMeaning: {
13126
13179
  authority: "taxonomy",
13127
- role: "primary",
13180
+ meaningPriority: "primary",
13128
13181
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
13129
13182
  },
13130
13183
  explanation: "Arabesque can name the taxonomy's bilaterally organised ornamental unit shape or, in Material Bank PIM usage, the star and cross units of a Moroccan tile assortment; the bare word does not settle which.",
13131
13184
  governance: lexicalGovernance(
13132
- "The default records the taxonomy's own governed shape; the PIM-evidenced star and cross readings are recorded as secondary rather than merged into one multi-concept reading.",
13185
+ "The default records the taxonomy's own governed shape; the PIM-evidenced star and cross meanings are recorded as secondary rather than merged into one multi-concept meaning.",
13133
13186
  { basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
13134
13187
  TAX57_LIFECYCLE
13135
13188
  ),
13136
- outcome: "ambiguous",
13137
- phrase: "arabesque",
13138
- readings: [
13189
+ meanings: [
13139
13190
  {
13140
13191
  authority: "taxonomy",
13141
- role: "primary",
13192
+ meaningPriority: "primary",
13142
13193
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
13143
13194
  },
13144
13195
  {
13145
13196
  authority: "taxonomy",
13146
- role: "secondary",
13197
+ meaningPriority: "secondary",
13147
13198
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/star`
13148
13199
  },
13149
13200
  {
13150
13201
  authority: "taxonomy",
13151
- role: "secondary",
13202
+ meaningPriority: "secondary",
13152
13203
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/cross`
13153
13204
  }
13154
- ]
13205
+ ],
13206
+ outcome: "ambiguous",
13207
+ phrase: "arabesque"
13155
13208
  },
13156
13209
  ...["round & oval", "round and oval"].map(
13157
13210
  (phrase) => ({
13158
- explanation: "The compound phrase does not settle whether a round or an oval unit is meant.",
13211
+ explanation: "The compound phrase names the broad term: a round or oval unit, not said which.",
13159
13212
  governance: lexicalGovernance(
13160
- AMBIGUITY_GOVERNANCE,
13213
+ "Taxonomy records the evidenced compound phrase without assigning a consumer route.",
13161
13214
  {
13162
13215
  basis: "evidenced",
13163
13216
  snapshot: TAX57_DATE4,
13164
13217
  source: TAX57_SHAPE_SOURCE
13165
13218
  },
13166
- TAX57_LIFECYCLE
13219
+ ROUND_OR_OVAL_LIFECYCLE
13167
13220
  ),
13168
- outcome: "ambiguous",
13221
+ outcome: "equivalent",
13169
13222
  phrase,
13170
- readings: [
13171
- {
13172
- authority: "taxonomy",
13173
- uri: `${TAXONOMY_BASE_URI}/id/unit-shape/circle`
13174
- },
13175
- {
13176
- authority: "taxonomy",
13177
- uri: `${TAXONOMY_BASE_URI}/id/unit-shape/oval`
13178
- }
13179
- ]
13223
+ target: {
13224
+ authority: "taxonomy",
13225
+ uri: `${TAXONOMY_BASE_URI}/id/unit-shape/round-or-oval`
13226
+ }
13180
13227
  })
13181
13228
  ),
13182
13229
  {
@@ -13200,9 +13247,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13200
13247
  { basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
13201
13248
  TAX57_LIFECYCLE
13202
13249
  ),
13203
- outcome: "ambiguous",
13204
- phrase: "parallelogram & chevron",
13205
- readings: [
13250
+ meanings: [
13206
13251
  {
13207
13252
  authority: "taxonomy",
13208
13253
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/parallelogram`
@@ -13211,44 +13256,46 @@ var AUTHORED_LEXICAL_ENTRIES = [
13211
13256
  authority: "taxonomy",
13212
13257
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/chevron`
13213
13258
  }
13214
- ]
13259
+ ],
13260
+ outcome: "ambiguous",
13261
+ phrase: "parallelogram & chevron"
13215
13262
  },
13216
- // TAX-57 ordered reading. Paint and tile makers use "velvet" as a finish name for a soft-touch,
13263
+ // TAX-57 ordered meaning. Paint and tile brands use "velvet" as a finish name for a soft-touch,
13217
13264
  // light-absorbing surface; the trade means the woven cut-pile construction first.
13218
13265
  {
13219
- defaultTarget: {
13266
+ defaultMeaning: {
13220
13267
  authority: "taxonomy",
13221
- role: "primary",
13268
+ meaningPriority: "primary",
13222
13269
  uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
13223
13270
  },
13224
- explanation: "Velvet can name the woven cut-pile construction or a finish name paint and tile makers use for a soft-touch surface; the trade means the construction first.",
13271
+ explanation: "Velvet can name the woven cut-pile construction or a finish name paint and tile brands use for a soft-touch surface; the trade means the construction first.",
13225
13272
  governance: lexicalGovernance(
13226
- ORDERED_READING_GOVERNANCE,
13273
+ MEANING_PRIORITY_GOVERNANCE,
13227
13274
  { basis: "authored", source: TAX57_REVIEW_SOURCE },
13228
13275
  TAX57_LIFECYCLE
13229
13276
  ),
13230
- outcome: "ambiguous",
13231
- phrase: "velvet",
13232
- readings: [
13277
+ meanings: [
13233
13278
  {
13234
13279
  authority: "taxonomy",
13235
- role: "primary",
13280
+ meaningPriority: "primary",
13236
13281
  uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
13237
13282
  },
13238
13283
  {
13239
13284
  authority: "taxonomy",
13240
- role: "secondary",
13285
+ meaningPriority: "secondary",
13241
13286
  uri: `${TAXONOMY_BASE_URI}/id/finish/texture/velvety`
13242
13287
  }
13243
- ]
13288
+ ],
13289
+ outcome: "ambiguous",
13290
+ phrase: "velvet"
13244
13291
  },
13245
13292
  // Two observed source spellings on the product-category axis that the inferred
13246
- // readings promoted to customer equivalents. Each is a department label in one
13247
- // catalogue; the seenAs evidence stays on the term, and only the reading is declined.
13293
+ // meanings promoted to customer equivalents. Each is a department label in one
13294
+ // catalogue; the seenAs evidence stays on the term, and only the meaning is declined.
13248
13295
  {
13249
13296
  explanation: "Fittings is a catalogue department label for tapware in one source. As a request it names light fittings, electrical fittings and bathroom fittings just as readily, so it identifies no single product category.",
13250
13297
  governance: lexicalGovernance(
13251
- "A source department label is crosswalk evidence, not a customer reading of one concept.",
13298
+ "A source department label is crosswalk evidence, not a customer meaning of one concept.",
13252
13299
  { basis: "authored", source: "MaterialGraph MG-2226 category review" },
13253
13300
  TAXONOMY_SNAPSHOT_LIFECYCLE
13254
13301
  ),
@@ -13259,7 +13306,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13259
13306
  {
13260
13307
  explanation: "Electrical is a catalogue department label for wiring accessories in one source. As a request it names a trade that also covers back boxes, cable management and lighting, so it identifies no single product category.",
13261
13308
  governance: lexicalGovernance(
13262
- "A source department label is crosswalk evidence, not a customer reading of one concept.",
13309
+ "A source department label is crosswalk evidence, not a customer meaning of one concept.",
13263
13310
  { basis: "authored", source: "MaterialGraph MG-2226 category review" },
13264
13311
  TAXONOMY_SNAPSHOT_LIFECYCLE
13265
13312
  ),
@@ -13267,12 +13314,12 @@ var AUTHORED_LEXICAL_ENTRIES = [
13267
13314
  phrase: "electrical",
13268
13315
  reason: "Names a trade, not a kind of product."
13269
13316
  },
13270
- // Two more declined readings, added alongside `cladding` for the same reason `fittings` and
13317
+ // Two more declined meanings, added alongside `cladding` for the same reason `fittings` and
13271
13318
  // `electrical` were declined: each phrase spans more than the one product category it might name.
13272
13319
  {
13273
13320
  explanation: "Wall cladding also names interior stone and tile cladding, so as a request it does not settle between the exterior product category and an interior surface finish.",
13274
13321
  governance: lexicalGovernance(
13275
- "A compound phrase spanning an exterior product category and an interior finish is not one customer reading.",
13322
+ "A compound phrase spanning an exterior product category and an interior finish is not one customer meaning.",
13276
13323
  {
13277
13324
  basis: "authored",
13278
13325
  source: "@instruments/taxonomy 1.9.0 vocabulary review"
@@ -13331,15 +13378,15 @@ var lexicalPhrases = (term12) => [term12.slug, term12.label, ...term12.altLabels
13331
13378
  (phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
13332
13379
  );
13333
13380
  var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
13334
- var inferredLifecycle = (readings) => {
13335
- const terms = readings.flatMap((reading) => reading.terms);
13381
+ var inferredLifecycle = (meanings) => {
13382
+ const terms = meanings.flatMap((meaning) => meaning.terms);
13336
13383
  const lifecycles = terms.map((term12) => lifecycleFor(term12));
13337
13384
  const [introducedAt] = terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
13338
13385
  const reviewedAt = terms.map(
13339
13386
  (term12) => term12.reviewedAt ?? term12.introducedAt ?? PUBLISHED_V1_BASELINE
13340
13387
  ).toSorted(compareText).at(-1);
13341
13388
  if (introducedAt === void 0 || reviewedAt === void 0) {
13342
- throw new Error("Inferred lexical reading has no source term lifecycle.");
13389
+ throw new Error("Inferred lexical meaning has no source term lifecycle.");
13343
13390
  }
13344
13391
  const deprecated = lifecycles.every(
13345
13392
  (lifecycle) => lifecycle.status === "deprecated"
@@ -13360,35 +13407,35 @@ var inferredLifecycle = (readings) => {
13360
13407
  };
13361
13408
  var inferredLexicalEntries = () => {
13362
13409
  const authored4 = new Set(
13363
- AUTHORED_LEXICAL_ENTRIES.map((entry) => entry.phrase)
13410
+ AUTHORED_PHRASE_ENTRIES.map((entry) => entry.phrase)
13364
13411
  );
13365
13412
  const targetsByPhrase = /* @__PURE__ */ new Map();
13366
13413
  for (const location of AUTHORING_LOCATIONS) {
13367
13414
  const target = targetForLocation(location);
13368
13415
  for (const phrase of lexicalPhrases(location.term)) {
13369
- const readings = targetsByPhrase.get(phrase) ?? [];
13370
- const existing = readings.find(
13416
+ const meanings = targetsByPhrase.get(phrase) ?? [];
13417
+ const existing = meanings.find(
13371
13418
  (candidate) => targetKey(candidate.target) === targetKey(target)
13372
13419
  );
13373
13420
  if (existing === void 0) {
13374
- readings.push({ target, terms: [location.term] });
13421
+ meanings.push({ target, terms: [location.term] });
13375
13422
  } else {
13376
13423
  existing.terms.push(location.term);
13377
13424
  }
13378
- targetsByPhrase.set(phrase, readings);
13425
+ targetsByPhrase.set(phrase, meanings);
13379
13426
  }
13380
13427
  }
13381
- return [...targetsByPhrase].filter(([phrase]) => !authored4.has(phrase)).map(([phrase, readings]) => {
13382
- const [first, second, ...rest] = readings;
13428
+ return [...targetsByPhrase].filter(([phrase]) => !authored4.has(phrase)).map(([phrase, meanings]) => {
13429
+ const [first, second, ...rest] = meanings;
13383
13430
  if (first === void 0) {
13384
- throw new Error(`Lexical phrase "${phrase}" has no reading.`);
13431
+ throw new Error(`Lexical phrase "${phrase}" has no meaning.`);
13385
13432
  }
13386
- const lifecycle = inferredLifecycle(readings);
13433
+ const lifecycle = inferredLifecycle(meanings);
13387
13434
  if (second === void 0) {
13388
13435
  return {
13389
- explanation: `The published spelling \u201C${phrase}\u201D has one governed reading.`,
13436
+ explanation: `The published spelling \u201C${phrase}\u201D has one governed meaning.`,
13390
13437
  governance: lexicalGovernance(
13391
- "The reading is derived from a canonical label, slug, alternate label, or observed source spelling.",
13438
+ "The meaning is derived from a canonical label, slug, alternate label, or observed source spelling.",
13392
13439
  {
13393
13440
  basis: "evidenced",
13394
13441
  snapshot: lifecycle.reviewedAt,
@@ -13404,7 +13451,7 @@ var inferredLexicalEntries = () => {
13404
13451
  return {
13405
13452
  explanation: `The published spelling \u201C${phrase}\u201D names more than one governed concept.`,
13406
13453
  governance: lexicalGovernance(
13407
- "No context-independent primary reading has been governed.",
13454
+ "No context-independent primary meaning has been governed.",
13408
13455
  {
13409
13456
  basis: "evidenced",
13410
13457
  snapshot: lifecycle.reviewedAt,
@@ -13412,37 +13459,189 @@ var inferredLexicalEntries = () => {
13412
13459
  },
13413
13460
  lifecycle
13414
13461
  ),
13415
- outcome: "ambiguous",
13416
- phrase,
13417
- readings: [
13462
+ meanings: [
13418
13463
  first.target,
13419
13464
  second.target,
13420
13465
  ...rest.map(({ target }) => target)
13421
- ]
13466
+ ],
13467
+ outcome: "ambiguous",
13468
+ phrase
13422
13469
  };
13423
13470
  });
13424
13471
  };
13425
- var LEXICAL_ENTRIES = [
13426
- ...AUTHORED_LEXICAL_ENTRIES,
13472
+ var PHRASE_ENTRIES = [
13473
+ ...AUTHORED_PHRASE_ENTRIES,
13427
13474
  ...inferredLexicalEntries()
13428
13475
  ].toSorted((left, right) => compareText(left.phrase, right.phrase));
13429
13476
  var revisionOf = (value) => `sha256:${createHash("sha256").update(JSON.stringify(value)).digest("hex")}`;
13430
13477
  var TAXONOMY_CORPUS_REVISION = revisionOf({
13431
13478
  graph: KNOWLEDGE_GRAPH,
13432
- lexicalEntries: LEXICAL_ENTRIES
13479
+ phraseEntries: PHRASE_ENTRIES
13433
13480
  });
13434
13481
  var TAXONOMY_CORPUS_METADATA = {
13435
13482
  edgeCount: KNOWLEDGE_GRAPH.edges.length,
13436
- lexicalEntryCount: LEXICAL_ENTRIES.length,
13437
13483
  nodeCount: KNOWLEDGE_GRAPH.nodes.length,
13484
+ phraseEntryCount: PHRASE_ENTRIES.length,
13438
13485
  revision: TAXONOMY_CORPUS_REVISION,
13439
13486
  snapshot: TAXONOMY_SNAPSHOT,
13440
13487
  version: TAXONOMY_VERSION
13441
13488
  };
13489
+
13490
+ // src/assessment-policy.ts
13491
+ var PHOTO_CANDIDATE_PATHS = [
13492
+ "finish/texture/fluted",
13493
+ "finish/texture/heavily-reliefed",
13494
+ "finish/texture/reeded",
13495
+ "finish/texture/ribbed",
13496
+ "finish/texture/textured",
13497
+ "pattern/density/busy",
13498
+ "pattern/density/dense",
13499
+ "pattern/density/light",
13500
+ "pattern/density/moderate",
13501
+ "pattern/density/sparse",
13502
+ "pattern/density/unpatterned",
13503
+ "pattern/directionality/bi-directional",
13504
+ "pattern/directionality/linear",
13505
+ "pattern/directionality/low",
13506
+ "pattern/directionality/non-directional",
13507
+ "pattern/directionality/radial",
13508
+ "pattern/directionality/strong-linear",
13509
+ "pattern/regularity/irregular",
13510
+ "pattern/regularity/ordered",
13511
+ "pattern/regularity/organic",
13512
+ "pattern/regularity/relaxed",
13513
+ "pattern/regularity/uniform",
13514
+ "pattern/type/abstract-graphic",
13515
+ "pattern/type/abstract-organic",
13516
+ "pattern/type/animal-print",
13517
+ "pattern/type/botanical",
13518
+ "pattern/type/character",
13519
+ "pattern/type/checkerboard",
13520
+ "pattern/type/chevron",
13521
+ "pattern/type/crocodile",
13522
+ "pattern/type/damask",
13523
+ "pattern/type/geometric",
13524
+ "pattern/type/gradient",
13525
+ "pattern/type/herringbone",
13526
+ "pattern/type/leopard",
13527
+ "pattern/type/lizard",
13528
+ "pattern/type/marbleised",
13529
+ "pattern/type/natural-motif",
13530
+ "pattern/type/novelty",
13531
+ "pattern/type/ostrich",
13532
+ "pattern/type/paisley",
13533
+ "pattern/type/plaid-check",
13534
+ "pattern/type/plain",
13535
+ "pattern/type/scenic",
13536
+ "pattern/type/snakeskin",
13537
+ "pattern/type/strie",
13538
+ "pattern/type/stripe",
13539
+ "pattern/type/texture",
13540
+ "pattern/type/toile",
13541
+ "pattern/type/zebra",
13542
+ "pattern/type/zigzag"
13543
+ ];
13544
+ var photoUris = new Set(
13545
+ PHOTO_CANDIDATE_PATHS.map((path) => `${TAXONOMY_BASE_URI}/id/${path}`)
13546
+ );
13547
+ var requirementsFor = (concept) => {
13548
+ if (photoUris.has(concept.uri)) {
13549
+ return [
13550
+ "Assess only the supplied material region and visible canonical meaning.",
13551
+ "Sufficient native detail and field extent; unavailable evidence is unknown.",
13552
+ "A detail-view decision does not automatically describe the overview.",
13553
+ "Appearance never proves composition, manufacturing process or product identity."
13554
+ ];
13555
+ }
13556
+ if (concept.facet.endsWith("/pattern/figure")) {
13557
+ return [
13558
+ "Retain catalogue evidence under ADR 0008; image confirmation is not admitted."
13559
+ ];
13560
+ }
13561
+ if (concept.facet.endsWith("/pattern/scale")) {
13562
+ return [
13563
+ "Physical extent or repeat measurement; pixel size alone is insufficient."
13564
+ ];
13565
+ }
13566
+ if (concept.facet.endsWith("/finish/sheen")) {
13567
+ return [
13568
+ "Specified illumination and viewing angles; an arbitrary photo is insufficient."
13569
+ ];
13570
+ }
13571
+ if (concept.axis.endsWith("/installation-layout")) {
13572
+ return [
13573
+ "An installed assembly with actual unit boundaries, not an isolated unit or printed resemblance."
13574
+ ];
13575
+ }
13576
+ return [];
13577
+ };
13578
+ var routeFor = (concept) => {
13579
+ if (photoUris.has(concept.uri)) {
13580
+ return "photo-candidate";
13581
+ }
13582
+ if (concept.axis.endsWith("/axis/palette")) {
13583
+ return "external-authority";
13584
+ }
13585
+ if (concept.facet.endsWith("/pattern/figure")) {
13586
+ return "catalogue-only";
13587
+ }
13588
+ if (concept.facet.endsWith("/pattern/scale") || concept.facet.endsWith("/finish/sheen") || concept.axis.endsWith("/installation-layout")) {
13589
+ return "capture-conditional";
13590
+ }
13591
+ if (["material", "material-family", "construction", "product-category"].some(
13592
+ (axis) => concept.axis.endsWith(`/axis/${axis}`)
13593
+ ) || concept.facet.endsWith("/finish/treatment")) {
13594
+ return "catalogue-only";
13595
+ }
13596
+ if (["style", "mood", "period"].some(
13597
+ (axis) => concept.axis.endsWith(`/axis/${axis}`)
13598
+ )) {
13599
+ return "context-required";
13600
+ }
13601
+ return "unreviewed";
13602
+ };
13603
+ var CONCEPT_ASSESSMENT_POLICIES = KNOWLEDGE_GRAPH.nodes.filter(
13604
+ (node) => node.kind === "concept" && node.lifecycle.status === "active"
13605
+ ).map((concept) => ({
13606
+ conceptUri: concept.uri,
13607
+ evidenceRoute: routeFor(concept),
13608
+ materialApplicability: {
13609
+ reason: "Category scope has not received a complete evidence-backed cross-surface review.",
13610
+ status: "unreviewed"
13611
+ },
13612
+ references: [concept.uri],
13613
+ requirements: requirementsFor(concept)
13614
+ }));
13615
+ var ASSESSMENT_AUTHORITY_REFERENCES = [
13616
+ {
13617
+ role: "appearance-terminology",
13618
+ url: "https://store.astm.org/e0284-25.html"
13619
+ },
13620
+ { role: "property-measurement", url: "https://store.astm.org/d0523-25.html" },
13621
+ { role: "construction-classification", url: "https://uniclass.thenbs.com/" },
13622
+ {
13623
+ role: "construction-classification",
13624
+ url: "https://www.csiresources.org/standards/overview"
13625
+ },
13626
+ {
13627
+ role: "controlled-vocabulary",
13628
+ url: "https://www.getty.edu/research/tools/vocabularies/aat/about.html"
13629
+ }
13630
+ ];
13631
+ var ASSESSMENT_POLICY_REVISION = `sha256:${createHash2("sha256").update(
13632
+ JSON.stringify({
13633
+ authorities: ASSESSMENT_AUTHORITY_REFERENCES,
13634
+ policies: CONCEPT_ASSESSMENT_POLICIES,
13635
+ taxonomyRevision: TAXONOMY_CORPUS_REVISION
13636
+ })
13637
+ ).digest("hex")}`;
13442
13638
  export {
13639
+ ASSESSMENT_AUTHORITY_REFERENCES,
13640
+ ASSESSMENT_POLICY_REVISION,
13443
13641
  COLOR_SCOPE_REFERENCE_KINDS,
13642
+ CONCEPT_ASSESSMENT_POLICIES,
13444
13643
  KNOWLEDGE_GRAPH,
13445
- LEXICAL_ENTRIES,
13644
+ PHRASE_ENTRIES,
13446
13645
  TAXONOMY_BASE_URI,
13447
13646
  TAXONOMY_CORPUS_METADATA,
13448
13647
  TAXONOMY_CORPUS_REVISION,