@instruments/taxonomy 1.14.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
  }
@@ -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"
@@ -10659,10 +10662,10 @@ var MOOD_ANCHORS = {
10659
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"
10660
10663
  ],
10661
10664
  calm: [
10662
- "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"
10663
10666
  ],
10664
10667
  crisp: [
10665
- "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"
10666
10669
  ],
10667
10670
  domestic: [
10668
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"
@@ -10686,7 +10689,7 @@ var MOOD_ANCHORS = {
10686
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"
10687
10690
  ],
10688
10691
  playful: [
10689
- "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"
10690
10693
  ],
10691
10694
  "quiet-luxury": [
10692
10695
  // A MAGNET IN ITS FIRST DRAFT, and worth recording why. It listed figured stone, grain-matched
@@ -10735,7 +10738,7 @@ var PERIOD_ANCHORS = {
10735
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"
10736
10739
  ],
10737
10740
  "late-century": [
10738
- "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"
10739
10742
  ],
10740
10743
  medieval: [
10741
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"
@@ -10773,7 +10776,7 @@ var PLACE_ANCHORS = {
10773
10776
  "Bleached and salt-worn timber, blue worked against white, rattan and rope, and light arriving upward off water"
10774
10777
  ],
10775
10778
  cotswolds: [
10776
- "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"
10777
10780
  ],
10778
10781
  desert: [
10779
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"
@@ -10825,7 +10828,7 @@ var PLACE_ANCHORS = {
10825
10828
  "Ochre render over rubble stone, cypress standing against the skyline, large-format terracotta tile underfoot, and chestnut beams carrying the floor above"
10826
10829
  ],
10827
10830
  urban: [
10828
- "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"
10829
10832
  ],
10830
10833
  waterfront: [
10831
10834
  // WRITTEN TIGHT ON PURPOSE. The first draft said only "water at the window", and a bare query
@@ -11114,7 +11117,7 @@ var GATHERING_ANCHORS = {
11114
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"
11115
11118
  ],
11116
11119
  "library-lounge": [
11117
- "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"
11118
11121
  ],
11119
11122
  "living-room": [
11120
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"
@@ -11428,7 +11431,7 @@ var SLEEPING_ANCHORS = {
11428
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"
11429
11432
  ],
11430
11433
  "hotel-room": [
11431
- "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"
11432
11435
  ],
11433
11436
  nursery: [
11434
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"
@@ -11545,7 +11548,7 @@ var STYLE_ANCHORS = {
11545
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"
11546
11549
  ],
11547
11550
  constructivism: [
11548
- "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"
11549
11552
  ],
11550
11553
  contemporary: [
11551
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"
@@ -11572,7 +11575,7 @@ var STYLE_ANCHORS = {
11572
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"
11573
11576
  ],
11574
11577
  maximalism: [
11575
- "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"
11576
11579
  ],
11577
11580
  "mid-century-modern": [
11578
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"
@@ -11594,7 +11597,7 @@ var STYLE_ANCHORS = {
11594
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"
11595
11598
  ],
11596
11599
  postmodernism: [
11597
- "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"
11598
11601
  ],
11599
11602
  rationalism: [
11600
11603
  "Rationalist interior with strict geometric order, typological clarity, travertine and plaster, repeated square openings, Italian interwar and Tendenza discipline"
@@ -11607,7 +11610,7 @@ var STYLE_ANCHORS = {
11607
11610
  "Classic tailored interior with panelled walls, restrained mouldings, symmetrical furniture arrangement, quiet pattern, nothing improvised"
11608
11611
  ],
11609
11612
  transitional: [
11610
- "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"
11611
11614
  ],
11612
11615
  vernacular: [
11613
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"
@@ -11880,7 +11883,7 @@ var AXES = [
11880
11883
  { label: "Character", slug: "character", terms: PALETTE_CHARACTER_TERMS }
11881
11884
  ],
11882
11885
  label: "Palette",
11883
- question: "What colour is it?",
11886
+ question: "What color is it?",
11884
11887
  slug: "palette",
11885
11888
  status: "authored"
11886
11889
  },
@@ -11896,7 +11899,7 @@ var AXES = [
11896
11899
  status: "authored"
11897
11900
  },
11898
11901
  {
11899
- 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.",
11900
11903
  facets: [
11901
11904
  {
11902
11905
  governance: TAX48_AUTHORED_GOVERNANCE,
@@ -11918,7 +11921,7 @@ var AXES = [
11918
11921
  status: "authored"
11919
11922
  },
11920
11923
  {
11921
- 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.",
11922
11925
  facets: single("season", "Season", SEASON_TERMS, TAX48_AUTHORED_GOVERNANCE),
11923
11926
  governance: TAX48_AUTHORED_GOVERNANCE,
11924
11927
  label: "Season",
@@ -11961,7 +11964,7 @@ var AXES = [
11961
11964
  status: "declared"
11962
11965
  },
11963
11966
  {
11964
- 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.",
11965
11968
  facets: [],
11966
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.",
11967
11970
  label: "Density",
@@ -12014,7 +12017,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
12014
12017
  // src/v1.ts
12015
12018
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
12016
12019
  var TAXONOMY_SNAPSHOT = "2026-10-02";
12017
- var TAXONOMY_VERSION = "1.14.0";
12020
+ var TAXONOMY_VERSION = "2.0.0";
12018
12021
  var PUBLISHED_V1_BASELINE = "2026-08-30";
12019
12022
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
12020
12023
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -12291,16 +12294,16 @@ var colorScope = (identifier, referenceKind) => ({
12291
12294
  });
12292
12295
  var WALNUT_MATERIAL = {
12293
12296
  authority: "taxonomy",
12294
- role: "primary",
12297
+ meaningPriority: "primary",
12295
12298
  uri: `${TAXONOMY_BASE_URI}/id/material/walnut`
12296
12299
  };
12297
12300
  var WALNUT_COLOUR = {
12298
12301
  ...colorScope("walnut", NAMED_COLOR_REFERENCE_KIND),
12299
- role: "secondary"
12302
+ meaningPriority: "secondary"
12300
12303
  };
12301
- var ordered = (path, role) => ({
12304
+ var ordered = (path, meaningPriority) => ({
12302
12305
  authority: "taxonomy",
12303
- role,
12306
+ meaningPriority,
12304
12307
  uri: `${TAXONOMY_BASE_URI}/id/${path}`
12305
12308
  });
12306
12309
  var ENGINEERED_QUARTZ_SURFACING = ordered(
@@ -12311,14 +12314,14 @@ var QUARTZ_MINERAL = ordered("material/quartz", "secondary");
12311
12314
  var MELAMINE_BOARD = ordered("material/melamine-faced-board", "primary");
12312
12315
  var MELAMINE_RESIN = ordered("material/melamine", "secondary");
12313
12316
  var HIERARCHY_REVIEW_DATE = "2026-09-22";
12314
- 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)";
12315
12318
  var HIERARCHY_REVIEW_LIFECYCLE = {
12316
12319
  introducedAt: HIERARCHY_REVIEW_DATE,
12317
12320
  reviewedAt: HIERARCHY_REVIEW_DATE,
12318
12321
  status: "active"
12319
12322
  };
12320
- var AMBIGUITY_GOVERNANCE = "Taxonomy preserves the governed readings without assigning a default, role, contextual preference, or consumer route.";
12321
- 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.";
12322
12325
  var TAX_1_9_0_DATE = "2026-09-27";
12323
12326
  var TAXONOMY_SNAPSHOT_LIFECYCLE = {
12324
12327
  introducedAt: TAX_1_9_0_DATE,
@@ -12351,7 +12354,7 @@ var reviewedTaxonomy = (path) => ({
12351
12354
  authority: "taxonomy",
12352
12355
  uri: `${TAXONOMY_BASE_URI}/id/${path}`
12353
12356
  });
12354
- 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 = []) => ({
12355
12358
  explanation,
12356
12359
  governance: lexicalGovernance(
12357
12360
  AMBIGUITY_GOVERNANCE,
@@ -12362,16 +12365,16 @@ var referencedCrossover = (phrase, taxonomyPath, colorScopeIdentifier, explanati
12362
12365
  },
12363
12366
  { introducedAt, reviewedAt: HIERARCHY_REVIEW_DATE, status: "active" }
12364
12367
  ),
12365
- outcome: "ambiguous",
12366
- phrase,
12367
- readings: [
12368
+ meanings: [
12368
12369
  reviewedTaxonomy(taxonomyPath),
12369
12370
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12370
- ...additionalReadings
12371
- ]
12371
+ ...additionalMeanings
12372
+ ],
12373
+ outcome: "ambiguous",
12374
+ phrase
12372
12375
  });
12373
12376
  var WOOD_HANDBOOK5 = "USDA Wood Handbook (2021), chapter 2";
12374
- var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, additionalReadings = []) => ({
12377
+ var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explanation, definitionSource, additionalMeanings = []) => ({
12375
12378
  explanation,
12376
12379
  governance: lexicalGovernance(
12377
12380
  AMBIGUITY_GOVERNANCE,
@@ -12386,39 +12389,39 @@ var colorscope940Crossover = (phrase, taxonomyPath, colorScopeIdentifier, explan
12386
12389
  status: "active"
12387
12390
  }
12388
12391
  ),
12389
- outcome: "ambiguous",
12390
- phrase,
12391
- readings: [
12392
+ meanings: [
12392
12393
  reviewedTaxonomy(taxonomyPath),
12393
12394
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12394
- ...additionalReadings
12395
- ]
12395
+ ...additionalMeanings
12396
+ ],
12397
+ outcome: "ambiguous",
12398
+ phrase
12396
12399
  });
12397
12400
  var crossoverAmbiguity = (phrase, taxonomyUri, colorScopeIdentifier, explanation, source, additionalTaxonomyUris = []) => ({
12398
12401
  explanation,
12399
12402
  governance: lexicalGovernance(
12400
- "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.",
12401
12404
  {
12402
12405
  basis: "evidenced",
12403
12406
  snapshot: PUBLISHED_V1_BASELINE,
12404
12407
  source
12405
12408
  }
12406
12409
  ),
12407
- outcome: "ambiguous",
12408
- phrase,
12409
- readings: [
12410
+ meanings: [
12410
12411
  { authority: "taxonomy", uri: taxonomyUri },
12411
12412
  colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
12412
12413
  ...additionalTaxonomyUris.map((uri) => ({
12413
12414
  authority: "taxonomy",
12414
12415
  uri
12415
12416
  }))
12416
- ]
12417
+ ],
12418
+ outcome: "ambiguous",
12419
+ phrase
12417
12420
  });
12418
12421
  var crossoverEquivalent = (phrase, taxonomyUri, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor()) => ({
12419
12422
  explanation,
12420
12423
  governance: lexicalGovernance(
12421
- "Taxonomy records the evidenced material reading without assigning a consumer route.",
12424
+ "Taxonomy records the evidenced material meaning without assigning a consumer route.",
12422
12425
  {
12423
12426
  basis: "evidenced",
12424
12427
  snapshot,
@@ -12430,8 +12433,8 @@ var crossoverEquivalent = (phrase, taxonomyUri, explanation, source, snapshot =
12430
12433
  phrase,
12431
12434
  target: { authority: "taxonomy", uri: taxonomyUri }
12432
12435
  });
12433
- var crossoverTaxonomyAmbiguity = (phrase, readings, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor(), basis = "evidenced") => {
12434
- const [first, second] = readings;
12436
+ var crossoverTaxonomyAmbiguity = (phrase, meanings, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor(), basis = "evidenced") => {
12437
+ const [first, second] = meanings;
12435
12438
  return {
12436
12439
  explanation,
12437
12440
  governance: lexicalGovernance(
@@ -12443,22 +12446,45 @@ var crossoverTaxonomyAmbiguity = (phrase, readings, explanation, source, snapsho
12443
12446
  },
12444
12447
  lifecycle
12445
12448
  ),
12446
- outcome: "ambiguous",
12447
- phrase,
12448
- readings: [
12449
+ meanings: [
12449
12450
  { authority: "taxonomy", uri: first },
12450
12451
  { authority: "taxonomy", uri: second }
12451
- ]
12452
+ ],
12453
+ outcome: "ambiguous",
12454
+ phrase
12452
12455
  };
12453
12456
  };
12454
- 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
+ },
12455
12481
  crossoverTaxonomyAmbiguity(
12456
12482
  "herringbone or chevron",
12457
12483
  [
12458
12484
  `${TAXONOMY_BASE_URI}/id/pattern/type/herringbone`,
12459
12485
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
12460
12486
  ],
12461
- "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.",
12462
12488
  "Linear TAX-45 reviewed implementation contract",
12463
12489
  TAX45_REVIEW_SNAPSHOT,
12464
12490
  {
@@ -12474,7 +12500,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12474
12500
  `${TAXONOMY_BASE_URI}/id/pattern/type/herringbone`,
12475
12501
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
12476
12502
  ],
12477
- "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.",
12478
12504
  `${RETAIL_PATTERN_SOURCE}, reconciled by Linear TAX-45`,
12479
12505
  TAX45_REVIEW_SNAPSHOT,
12480
12506
  {
@@ -12490,7 +12516,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12490
12516
  `${TAXONOMY_BASE_URI}/id/product-category/mosaic-tile`,
12491
12517
  `${TAXONOMY_BASE_URI}/id/format/mosaic`
12492
12518
  ],
12493
- "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.",
12494
12520
  `${searchCorpusEvidence("mosaic")}; Uniclass Pr_35_93_96_53 Mosaic tiles; consumer authority-union boundary reviewed 2026-08-31`,
12495
12521
  SEARCH_CORPUS_SNAPSHOT,
12496
12522
  {
@@ -12500,9 +12526,9 @@ var AUTHORED_LEXICAL_ENTRIES = [
12500
12526
  }
12501
12527
  ),
12502
12528
  {
12503
- 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.",
12504
12530
  governance: lexicalGovernance(
12505
- "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.",
12506
12532
  {
12507
12533
  basis: "vendored",
12508
12534
  snapshot: PUBLISHED_V1_BASELINE,
@@ -12517,14 +12543,14 @@ var AUTHORED_LEXICAL_ENTRIES = [
12517
12543
  "alabaster",
12518
12544
  `${TAXONOMY_BASE_URI}/id/material/alabaster`,
12519
12545
  "alabaster",
12520
- "Alabaster can name decorative gypsum stone or the ColorScope named colour Alabaster; neither reading establishes the other.",
12521
- `${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`
12522
12548
  ),
12523
12549
  crossoverAmbiguity(
12524
12550
  "brass",
12525
12551
  `${TAXONOMY_BASE_URI}/id/material/brass`,
12526
12552
  "brass",
12527
- "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.",
12528
12554
  crossoverSource("brass"),
12529
12555
  [`${TAXONOMY_BASE_URI}/id/finish/treatment/brass`]
12530
12556
  ),
@@ -12532,105 +12558,105 @@ var AUTHORED_LEXICAL_ENTRIES = [
12532
12558
  "bronze",
12533
12559
  `${TAXONOMY_BASE_URI}/id/material/bronze`,
12534
12560
  "bronze",
12535
- "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.",
12536
12562
  crossoverSource("bronze")
12537
12563
  ),
12538
12564
  crossoverAmbiguity(
12539
12565
  "chrome",
12540
12566
  `${TAXONOMY_BASE_URI}/id/finish/treatment/chrome`,
12541
12567
  "chrome",
12542
- "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.",
12543
12569
  crossoverSource("chrome")
12544
12570
  ),
12545
12571
  crossoverAmbiguity(
12546
12572
  "cherry",
12547
12573
  `${TAXONOMY_BASE_URI}/id/material/cherry`,
12548
12574
  "cherry",
12549
- "Cherry can name timber or the ColorScope named colour Cherry; the common name does not prove species or colour.",
12550
- `${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`
12551
12577
  ),
12552
12578
  crossoverAmbiguity(
12553
12579
  "chestnut",
12554
12580
  `${TAXONOMY_BASE_URI}/id/material/chestnut`,
12555
12581
  "chestnut",
12556
- "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.",
12557
12583
  crossoverSource("chestnut")
12558
12584
  ),
12559
12585
  crossoverAmbiguity(
12560
12586
  "clay",
12561
12587
  `${TAXONOMY_BASE_URI}/id/material/clay`,
12562
12588
  "clay",
12563
- "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.",
12564
12590
  crossoverSource("clay")
12565
12591
  ),
12566
12592
  crossoverAmbiguity(
12567
12593
  "copper",
12568
12594
  `${TAXONOMY_BASE_URI}/id/material/copper`,
12569
12595
  "copper",
12570
- "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.",
12571
12597
  crossoverSource("copper")
12572
12598
  ),
12573
12599
  crossoverAmbiguity(
12574
12600
  "denim",
12575
12601
  `${TAXONOMY_BASE_URI}/id/material/denim`,
12576
12602
  "denim",
12577
- "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.",
12578
12604
  crossoverSource("denim")
12579
12605
  ),
12580
12606
  crossoverAmbiguity(
12581
12607
  "ebony",
12582
12608
  `${TAXONOMY_BASE_URI}/id/material/ebony`,
12583
12609
  "ebony",
12584
- "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.",
12585
12611
  crossoverSource("ebony")
12586
12612
  ),
12587
12613
  crossoverAmbiguity(
12588
12614
  "gold",
12589
12615
  `${TAXONOMY_BASE_URI}/id/material/gold`,
12590
12616
  "gold",
12591
- "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.",
12592
12618
  crossoverSource("gold")
12593
12619
  ),
12594
12620
  crossoverAmbiguity(
12595
12621
  "gunmetal",
12596
12622
  `${TAXONOMY_BASE_URI}/id/material/gunmetal`,
12597
12623
  "gunmetal",
12598
- "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.",
12599
12625
  crossoverSource("gunmetal")
12600
12626
  ),
12601
12627
  crossoverAmbiguity(
12602
12628
  "iron",
12603
12629
  `${TAXONOMY_BASE_URI}/id/material/iron`,
12604
12630
  "iron",
12605
- "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.",
12606
12632
  crossoverSource("iron")
12607
12633
  ),
12608
12634
  crossoverAmbiguity(
12609
12635
  "jade",
12610
12636
  `${TAXONOMY_BASE_URI}/id/material/jade`,
12611
12637
  "jade",
12612
- "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.",
12613
12639
  crossoverSource("jade")
12614
12640
  ),
12615
12641
  crossoverAmbiguity(
12616
12642
  "linen",
12617
12643
  `${TAXONOMY_BASE_URI}/id/material/linen`,
12618
12644
  "linen",
12619
- "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.",
12620
12646
  crossoverSource("linen")
12621
12647
  ),
12622
12648
  crossoverAmbiguity(
12623
12649
  "mahogany",
12624
12650
  `${TAXONOMY_BASE_URI}/id/material/mahogany`,
12625
12651
  "mahogany",
12626
- "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.",
12627
12653
  crossoverSource("mahogany")
12628
12654
  ),
12629
12655
  crossoverAmbiguity(
12630
12656
  "nickel",
12631
12657
  `${TAXONOMY_BASE_URI}/id/material/nickel`,
12632
12658
  "nickel",
12633
- "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.",
12634
12660
  crossoverSource("nickel"),
12635
12661
  [`${TAXONOMY_BASE_URI}/id/finish/treatment/nickel`]
12636
12662
  ),
@@ -12638,63 +12664,63 @@ var AUTHORED_LEXICAL_ENTRIES = [
12638
12664
  "obsidian",
12639
12665
  `${TAXONOMY_BASE_URI}/id/material/obsidian`,
12640
12666
  "obsidian",
12641
- "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.",
12642
12668
  crossoverSource("obsidian")
12643
12669
  ),
12644
12670
  crossoverAmbiguity(
12645
12671
  "onyx",
12646
12672
  `${TAXONOMY_BASE_URI}/id/material/onyx`,
12647
12673
  "onyx",
12648
- "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.",
12649
12675
  crossoverSource("onyx")
12650
12676
  ),
12651
12677
  crossoverAmbiguity(
12652
12678
  "pewter",
12653
12679
  `${TAXONOMY_BASE_URI}/id/material/pewter`,
12654
12680
  "pewter",
12655
- "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.",
12656
12682
  crossoverSource("pewter")
12657
12683
  ),
12658
12684
  crossoverAmbiguity(
12659
12685
  "platinum",
12660
12686
  `${TAXONOMY_BASE_URI}/id/material/platinum`,
12661
12687
  "platinum",
12662
- "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.",
12663
12689
  crossoverSource("platinum")
12664
12690
  ),
12665
12691
  crossoverAmbiguity(
12666
12692
  "rosewood",
12667
12693
  `${TAXONOMY_BASE_URI}/id/material/rosewood`,
12668
12694
  "rosewood",
12669
- "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.",
12670
12696
  crossoverSource("rosewood")
12671
12697
  ),
12672
12698
  crossoverAmbiguity(
12673
12699
  "silver",
12674
12700
  `${TAXONOMY_BASE_URI}/id/material/silver`,
12675
12701
  "silver",
12676
- "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.",
12677
12703
  crossoverSource("silver")
12678
12704
  ),
12679
12705
  crossoverAmbiguity(
12680
12706
  "slate",
12681
12707
  `${TAXONOMY_BASE_URI}/id/material/slate`,
12682
12708
  "slate-gray",
12683
- "Slate can name dimension stone or the ColorScope named colour Slate Gray; neither reading implies the other.",
12684
- `${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`
12685
12711
  ),
12686
12712
  crossoverAmbiguity(
12687
12713
  "steel",
12688
12714
  `${TAXONOMY_BASE_URI}/id/material/steel`,
12689
12715
  "steel",
12690
- "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.",
12691
12717
  crossoverSource("steel")
12692
12718
  ),
12693
12719
  crossoverAmbiguity(
12694
12720
  "stone",
12695
12721
  `${TAXONOMY_BASE_URI}/id/material/stone`,
12696
12722
  "stone",
12697
- "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.",
12698
12724
  crossoverSource("stone"),
12699
12725
  [`${TAXONOMY_BASE_URI}/id/material-family/stone`]
12700
12726
  ),
@@ -12702,11 +12728,11 @@ var AUTHORED_LEXICAL_ENTRIES = [
12702
12728
  "terracotta",
12703
12729
  `${TAXONOMY_BASE_URI}/id/material/terracotta`,
12704
12730
  "terracotta",
12705
- "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.",
12706
12732
  crossoverSource("terracotta")
12707
12733
  ),
12708
12734
  {
12709
- 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.",
12710
12736
  governance: lexicalGovernance(
12711
12737
  AMBIGUITY_GOVERNANCE,
12712
12738
  {
@@ -12716,21 +12742,21 @@ var AUTHORED_LEXICAL_ENTRIES = [
12716
12742
  },
12717
12743
  REVIEW_LIFECYCLE
12718
12744
  ),
12719
- outcome: "ambiguous",
12720
- phrase: "brick",
12721
- readings: [
12745
+ meanings: [
12722
12746
  reviewedTaxonomy("material/brick"),
12723
12747
  colorScope("brick", NAMED_COLOR_REFERENCE_KIND)
12724
- ]
12748
+ ],
12749
+ outcome: "ambiguous",
12750
+ phrase: "brick"
12725
12751
  },
12726
- // Colour-material crossovers found by comparing every material label with the installed
12727
- // ColorScope names on 2026-09-22. No retrieval evidence orders either reading, so each keeps
12728
- // 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.
12729
12755
  referencedCrossover(
12730
12756
  "porcelain",
12731
12757
  "material/porcelain",
12732
12758
  "porcelain",
12733
- "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.",
12734
12760
  "ISO 13006:2018; ANSI A137.1",
12735
12761
  PUBLISHED_V1_BASELINE
12736
12762
  ),
@@ -12738,7 +12764,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12738
12764
  "sand",
12739
12765
  "material/sand",
12740
12766
  "sand",
12741
- "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.",
12742
12768
  "ISO 14688-1:2017",
12743
12769
  PUBLISHED_V1_BASELINE,
12744
12770
  [colorScope("beige", COLOR_FAMILY_REFERENCE_KIND)]
@@ -12747,223 +12773,223 @@ var AUTHORED_LEXICAL_ENTRIES = [
12747
12773
  "camel",
12748
12774
  "material/camel-hair",
12749
12775
  "camel",
12750
- "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.",
12751
12777
  "Regulation (EU) No 1007/2011 Annex I row 2"
12752
12778
  ),
12753
12779
  referencedCrossover(
12754
12780
  "ash",
12755
12781
  "material/ash",
12756
12782
  "ash",
12757
- "Ash can name timber of the genus Fraxinus or the ColorScope named colour Ash; neither reading implies the other.",
12758
- `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`
12759
12785
  ),
12760
12786
  referencedCrossover(
12761
12787
  "eucalyptus",
12762
12788
  "material/eucalyptus",
12763
12789
  "eucalyptus",
12764
- "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.",
12765
12791
  "EN 13556:2003"
12766
12792
  ),
12767
12793
  referencedCrossover(
12768
12794
  "pine",
12769
12795
  "material/pine",
12770
12796
  "pine-green",
12771
- "Pine can name timber of the genus Pinus or the ColorScope named colour Pine Green; neither reading implies the other.",
12772
- `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`
12773
12799
  ),
12774
12800
  // ColorScope 9.4.0 crossovers, found by re-running the 2026-09-22 comparison against the
12775
12801
  // installed 9.4.0 release. `chromium` reads against ColorScope's own alias, not a separate
12776
- // colour: 9.4.0's `chrome` colour carries the alias "Chromium", so the material label collides
12777
- // with `chrome`'s identity, not with a colour named `chromium`. It is a different phrase from
12778
- // `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
12779
12805
  // `material/chromium`.
12780
12806
  colorscope940Crossover(
12781
12807
  "granite",
12782
12808
  "material/granite",
12783
12809
  "granite",
12784
- "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.",
12785
12811
  "Wikidata Q41177 granite, https://www.wikidata.org/wiki/Q41177"
12786
12812
  ),
12787
12813
  colorscope940Crossover(
12788
12814
  "sandstone",
12789
12815
  "material/sandstone",
12790
12816
  "sandstone",
12791
- "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.",
12792
12818
  "Wikidata Q13085 sandstone, https://www.wikidata.org/wiki/Q13085"
12793
12819
  ),
12794
12820
  colorscope940Crossover(
12795
12821
  "basalt",
12796
12822
  "material/basalt",
12797
12823
  "basalt",
12798
- "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.",
12799
12825
  "Wikidata Q43338 basalt, https://www.wikidata.org/wiki/Q43338"
12800
12826
  ),
12801
12827
  colorscope940Crossover(
12802
12828
  "soapstone",
12803
12829
  "material/soapstone",
12804
12830
  "soapstone",
12805
- "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.",
12806
12832
  "Wikidata Q707896 soapstone, https://www.wikidata.org/wiki/Q707896"
12807
12833
  ),
12808
12834
  colorscope940Crossover(
12809
12835
  "hemp",
12810
12836
  "material/hemp",
12811
12837
  "hemp",
12812
- "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.",
12813
12839
  "Wikidata Q13414920 hemp fiber, https://www.wikidata.org/wiki/Q13414920"
12814
12840
  ),
12815
12841
  colorscope940Crossover(
12816
12842
  "rattan",
12817
12843
  "material/rattan",
12818
12844
  "rattan",
12819
- "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.",
12820
12846
  "Wikidata Q323021 rattan, https://www.wikidata.org/wiki/Q323021"
12821
12847
  ),
12822
12848
  colorscope940Crossover(
12823
12849
  "gypsum",
12824
12850
  "material/gypsum",
12825
12851
  "gypsum",
12826
- "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.",
12827
12853
  "EN 13279-1:2008"
12828
12854
  ),
12829
12855
  colorscope940Crossover(
12830
12856
  "cement",
12831
12857
  "material/cement",
12832
12858
  "cement",
12833
- "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.",
12834
12860
  "EN 197-1:2011"
12835
12861
  ),
12836
12862
  colorscope940Crossover(
12837
12863
  "carbon black",
12838
12864
  "material/carbon-black",
12839
12865
  "carbon-black",
12840
- "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.",
12841
12867
  "CAS Registry 1333-86-4"
12842
12868
  ),
12843
12869
  colorscope940Crossover(
12844
12870
  "titanium white",
12845
12871
  "material/titanium-dioxide",
12846
12872
  "titanium-white",
12847
- "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.",
12848
12874
  "CAS Registry 13463-67-7"
12849
12875
  ),
12850
12876
  colorscope940Crossover(
12851
12877
  "chromium",
12852
12878
  "material/chromium",
12853
12879
  "chrome",
12854
- '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.',
12855
12881
  "CAS Registry 7440-47-3"
12856
12882
  ),
12857
12883
  // `shell` and `seashell` are one material term (`material/shell`) with two label forms, and
12858
- // 9.4.0 gives each its own, different colour: `shell` collides with Shell Pink, `seashell` with
12859
- // the separate colour Seashell. Two phrases, not one, because the two labels now resolve to two
12860
- // 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.
12861
12887
  colorscope940Crossover(
12862
12888
  "shell",
12863
12889
  "material/shell",
12864
12890
  "shell-pink",
12865
- "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.",
12866
12892
  "Wikidata Q213096 seashell, https://www.wikidata.org/wiki/Q213096"
12867
12893
  ),
12868
12894
  colorscope940Crossover(
12869
12895
  "seashell",
12870
12896
  "material/shell",
12871
12897
  "seashell",
12872
- "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.",
12873
12899
  "Wikidata Q213096 seashell, https://www.wikidata.org/wiki/Q213096"
12874
12900
  ),
12875
12901
  colorscope940Crossover(
12876
12902
  "cashmere",
12877
12903
  "material/cashmere",
12878
12904
  "cashmere",
12879
- "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.",
12880
12906
  "Regulation (EU) No 1007/2011 Annex I row 2"
12881
12907
  ),
12882
12908
  colorscope940Crossover(
12883
12909
  "hickory",
12884
12910
  "material/hickory",
12885
12911
  "hickory",
12886
- "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.",
12887
12913
  WOOD_HANDBOOK5
12888
12914
  ),
12889
12915
  colorscope940Crossover(
12890
12916
  "pear",
12891
12917
  "material/pear",
12892
12918
  "pear",
12893
- "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.",
12894
12920
  WOOD_HANDBOOK5
12895
12921
  ),
12896
12922
  colorscope940Crossover(
12897
12923
  "pecan",
12898
12924
  "material/carya-illinoinensis",
12899
12925
  "pecan",
12900
- "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.",
12901
12927
  WOOD_HANDBOOK5
12902
12928
  ),
12903
12929
  colorscope940Crossover(
12904
12930
  "cedar",
12905
12931
  "material/cedar",
12906
12932
  "cedar",
12907
- "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.",
12908
12934
  WOOD_HANDBOOK5
12909
12935
  ),
12910
12936
  colorscope940Crossover(
12911
12937
  "redwood",
12912
12938
  "material/redwood",
12913
12939
  "redwood",
12914
- "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.",
12915
12941
  WOOD_HANDBOOK5
12916
12942
  ),
12917
12943
  // Quartz and melamine each name two materials in one word, and the trade uses the word for one
12918
12944
  // of them first: `quartz` is the engineered surfacing before the mineral, `melamine` the faced
12919
- // board before the resin. Both readings are on the material axis, so the ordering is a default
12920
- // 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.
12921
12947
  //
12922
12948
  // The evidence, read from the consumer's stored material values on 2026-09-22 and kept here
12923
12949
  // because a count is not ours to publish: of 1,490 stored quartz rows, 801 sat on large-format
12924
12950
  // slab, 102 on solid surface and 98 on natural stone; of 2,816 stored melamine rows, 2,650 sat on
12925
12951
  // laminate surface.
12926
12952
  {
12927
- defaultTarget: ENGINEERED_QUARTZ_SURFACING,
12953
+ defaultMeaning: ENGINEERED_QUARTZ_SURFACING,
12928
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.",
12929
12955
  governance: lexicalGovernance(
12930
- ORDERED_READING_GOVERNANCE,
12956
+ MEANING_PRIORITY_GOVERNANCE,
12931
12957
  {
12932
12958
  basis: "evidenced",
12933
12959
  snapshot: HIERARCHY_REVIEW_DATE,
12934
- 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)`
12935
12961
  },
12936
12962
  HIERARCHY_REVIEW_LIFECYCLE
12937
12963
  ),
12964
+ meanings: [ENGINEERED_QUARTZ_SURFACING, QUARTZ_MINERAL],
12938
12965
  outcome: "ambiguous",
12939
- phrase: "quartz",
12940
- readings: [ENGINEERED_QUARTZ_SURFACING, QUARTZ_MINERAL]
12966
+ phrase: "quartz"
12941
12967
  },
12942
12968
  {
12943
- defaultTarget: MELAMINE_BOARD,
12969
+ defaultMeaning: MELAMINE_BOARD,
12944
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.",
12945
12971
  governance: lexicalGovernance(
12946
- ORDERED_READING_GOVERNANCE,
12972
+ MEANING_PRIORITY_GOVERNANCE,
12947
12973
  {
12948
12974
  basis: "evidenced",
12949
12975
  snapshot: HIERARCHY_REVIEW_DATE,
12950
- 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)`
12951
12977
  },
12952
12978
  HIERARCHY_REVIEW_LIFECYCLE
12953
12979
  ),
12980
+ meanings: [MELAMINE_BOARD, MELAMINE_RESIN],
12954
12981
  outcome: "ambiguous",
12955
- phrase: "melamine",
12956
- readings: [MELAMINE_BOARD, MELAMINE_RESIN]
12982
+ phrase: "melamine"
12957
12983
  },
12958
- // 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
12959
12985
  // alias of its Light Taupe tone band, and a tone band has no reference kind in this corpus, so
12960
- // the colour reading cannot be a target without inventing one. The mosaic precedent applies:
12961
- // 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
12962
12988
  // tone-band reference kind is added, rewrite this as an ambiguity.
12963
12989
  {
12964
- 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.",
12965
12991
  governance: lexicalGovernance(
12966
- "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.",
12967
12993
  {
12968
12994
  basis: "referenced",
12969
12995
  snapshot: REVIEW_DATE12,
@@ -12979,7 +13005,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12979
13005
  "cotton",
12980
13006
  `${TAXONOMY_BASE_URI}/id/material/cotton`,
12981
13007
  "cotton",
12982
- "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.",
12983
13009
  crossoverSource("cotton")
12984
13010
  ),
12985
13011
  crossoverTaxonomyAmbiguity(
@@ -12988,7 +13014,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
12988
13014
  `${TAXONOMY_BASE_URI}/id/material-family/leather`,
12989
13015
  `${TAXONOMY_BASE_URI}/id/material/leather`
12990
13016
  ],
12991
- "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.",
12992
13018
  crossoverSource("leather")
12993
13019
  ),
12994
13020
  crossoverTaxonomyAmbiguity(
@@ -12997,46 +13023,46 @@ var AUTHORED_LEXICAL_ENTRIES = [
12997
13023
  `${TAXONOMY_BASE_URI}/id/material-family/wood`,
12998
13024
  `${TAXONOMY_BASE_URI}/id/material/wood`
12999
13025
  ],
13000
- "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.",
13001
13027
  crossoverSource("wood")
13002
13028
  ),
13003
13029
  crossoverAmbiguity(
13004
13030
  "jute",
13005
13031
  `${TAXONOMY_BASE_URI}/id/material/jute`,
13006
13032
  "jute",
13007
- "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.",
13008
13034
  crossoverSource("jute")
13009
13035
  ),
13010
13036
  crossoverAmbiguity(
13011
13037
  "sisal",
13012
13038
  `${TAXONOMY_BASE_URI}/id/material/sisal`,
13013
13039
  "sisal",
13014
- "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.",
13015
13041
  crossoverSource("sisal")
13016
13042
  ),
13017
13043
  crossoverEquivalent(
13018
13044
  "cork",
13019
13045
  `${TAXONOMY_BASE_URI}/id/material/cork`,
13020
- "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.",
13021
13047
  crossoverSource("cork")
13022
13048
  ),
13023
13049
  crossoverEquivalent(
13024
13050
  "wool",
13025
13051
  `${TAXONOMY_BASE_URI}/id/material/wool`,
13026
- "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.",
13027
13053
  crossoverSource("wool")
13028
13054
  ),
13029
13055
  crossoverEquivalent(
13030
13056
  "suede",
13031
13057
  `${TAXONOMY_BASE_URI}/id/material/suede`,
13032
- "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.",
13033
13059
  crossoverSource("suede")
13034
13060
  ),
13035
13061
  crossoverAmbiguity(
13036
13062
  "concrete",
13037
13063
  `${TAXONOMY_BASE_URI}/id/material-family/concrete`,
13038
13064
  "concrete",
13039
- "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.",
13040
13066
  crossoverSource("concrete"),
13041
13067
  [`${TAXONOMY_BASE_URI}/id/material/concrete`]
13042
13068
  ),
@@ -13044,22 +13070,22 @@ var AUTHORED_LEXICAL_ENTRIES = [
13044
13070
  "travertine",
13045
13071
  `${TAXONOMY_BASE_URI}/id/material/travertine`,
13046
13072
  "travertine",
13047
- "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.",
13048
13074
  crossoverSource("travertine")
13049
13075
  ),
13050
13076
  crossoverEquivalent(
13051
13077
  "marble",
13052
13078
  `${TAXONOMY_BASE_URI}/id/material/marble`,
13053
- "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.",
13054
13080
  crossoverSource("marble")
13055
13081
  ),
13056
13082
  {
13057
13083
  // Written inline rather than through `crossoverAmbiguity`, which stamps a fixed evidenced
13058
13084
  // snapshot: limestone was introduced later than the rest of this batch (2026-09-01, ADR-dated)
13059
- // and keeps that date now that ColorScope 9.4.0 gives it a colour reading too.
13060
- 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.",
13061
13087
  governance: lexicalGovernance(
13062
- "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.",
13063
13089
  {
13064
13090
  basis: "evidenced",
13065
13091
  snapshot: LIMESTONE_INTRODUCED,
@@ -13071,48 +13097,48 @@ var AUTHORED_LEXICAL_ENTRIES = [
13071
13097
  status: "active"
13072
13098
  }
13073
13099
  ),
13074
- outcome: "ambiguous",
13075
- phrase: "limestone",
13076
- readings: [
13100
+ meanings: [
13077
13101
  {
13078
13102
  authority: "taxonomy",
13079
13103
  uri: `${TAXONOMY_BASE_URI}/id/material/limestone`
13080
13104
  },
13081
13105
  colorScope("limestone", NAMED_COLOR_REFERENCE_KIND)
13082
- ]
13106
+ ],
13107
+ outcome: "ambiguous",
13108
+ phrase: "limestone"
13083
13109
  },
13084
13110
  crossoverAmbiguity(
13085
13111
  "oak",
13086
13112
  `${TAXONOMY_BASE_URI}/id/material/oak`,
13087
13113
  "oak",
13088
- "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.",
13089
13115
  crossoverSource("oak")
13090
13116
  ),
13091
13117
  crossoverAmbiguity(
13092
13118
  "teak",
13093
13119
  `${TAXONOMY_BASE_URI}/id/material/teak`,
13094
13120
  "teak",
13095
- "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.",
13096
13122
  crossoverSource("teak")
13097
13123
  ),
13098
13124
  {
13099
13125
  contextualPreferences: [
13100
13126
  { context: "material", target: WALNUT_MATERIAL },
13101
- { context: "colour", target: WALNUT_COLOUR }
13127
+ { context: "color", target: WALNUT_COLOUR }
13102
13128
  ],
13103
- defaultTarget: WALNUT_MATERIAL,
13104
- 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.",
13105
13131
  governance: lexicalGovernance(
13106
- "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.",
13107
13133
  {
13108
13134
  basis: "evidenced",
13109
13135
  snapshot: PUBLISHED_V1_BASELINE,
13110
13136
  source: crossoverSource("walnut")
13111
13137
  }
13112
13138
  ),
13139
+ meanings: [WALNUT_MATERIAL, WALNUT_COLOUR],
13113
13140
  outcome: "ambiguous",
13114
- phrase: "walnut",
13115
- readings: [WALNUT_MATERIAL, WALNUT_COLOUR]
13141
+ phrase: "walnut"
13116
13142
  },
13117
13143
  // `application.wall-backsplash` is vendored in `dictionaries.ts`, whose tests deep-equal the
13118
13144
  // authoring tuples, so the British spelling is an authored equivalent rather than an altLabel.
@@ -13127,7 +13153,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13127
13153
  phrase: "splashback",
13128
13154
  target: reviewedTaxonomy("application/wall-backsplash")
13129
13155
  },
13130
- // Benchtop takes the same three readings `countertop` resolves to by inference.
13156
+ // Benchtop takes the same three meanings `countertop` resolves to by inference.
13131
13157
  {
13132
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.",
13133
13159
  governance: lexicalGovernance(
@@ -13135,50 +13161,50 @@ var AUTHORED_LEXICAL_ENTRIES = [
13135
13161
  { basis: "authored", source: REVIEW_SOURCE9 },
13136
13162
  REVIEW_LIFECYCLE
13137
13163
  ),
13138
- outcome: "ambiguous",
13139
- phrase: "benchtop",
13140
- readings: [
13164
+ meanings: [
13141
13165
  reviewedTaxonomy("application/countertop"),
13142
13166
  reviewedTaxonomy("element/worktop"),
13143
13167
  reviewedTaxonomy("product-category/countertop")
13144
- ]
13168
+ ],
13169
+ outcome: "ambiguous",
13170
+ phrase: "benchtop"
13145
13171
  },
13146
13172
  // TAX-57 unit-shape compounds. Each names two governed shapes in one phrase, which the current
13147
- // 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
13148
13174
  // as an explicit ambiguity or, where one alternative is already an alt label of the other, an
13149
13175
  // equivalent - never a silently chosen shape. "round & oval" is an equivalent of the broad
13150
13176
  // `round-or-oval` term, which says exactly that a unit is round or oval without choosing (ADR 0012).
13151
13177
  {
13152
- defaultTarget: {
13178
+ defaultMeaning: {
13153
13179
  authority: "taxonomy",
13154
- role: "primary",
13180
+ meaningPriority: "primary",
13155
13181
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
13156
13182
  },
13157
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.",
13158
13184
  governance: lexicalGovernance(
13159
- "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.",
13160
13186
  { basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
13161
13187
  TAX57_LIFECYCLE
13162
13188
  ),
13163
- outcome: "ambiguous",
13164
- phrase: "arabesque",
13165
- readings: [
13189
+ meanings: [
13166
13190
  {
13167
13191
  authority: "taxonomy",
13168
- role: "primary",
13192
+ meaningPriority: "primary",
13169
13193
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
13170
13194
  },
13171
13195
  {
13172
13196
  authority: "taxonomy",
13173
- role: "secondary",
13197
+ meaningPriority: "secondary",
13174
13198
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/star`
13175
13199
  },
13176
13200
  {
13177
13201
  authority: "taxonomy",
13178
- role: "secondary",
13202
+ meaningPriority: "secondary",
13179
13203
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/cross`
13180
13204
  }
13181
- ]
13205
+ ],
13206
+ outcome: "ambiguous",
13207
+ phrase: "arabesque"
13182
13208
  },
13183
13209
  ...["round & oval", "round and oval"].map(
13184
13210
  (phrase) => ({
@@ -13221,9 +13247,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13221
13247
  { basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
13222
13248
  TAX57_LIFECYCLE
13223
13249
  ),
13224
- outcome: "ambiguous",
13225
- phrase: "parallelogram & chevron",
13226
- readings: [
13250
+ meanings: [
13227
13251
  {
13228
13252
  authority: "taxonomy",
13229
13253
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/parallelogram`
@@ -13232,44 +13256,46 @@ var AUTHORED_LEXICAL_ENTRIES = [
13232
13256
  authority: "taxonomy",
13233
13257
  uri: `${TAXONOMY_BASE_URI}/id/unit-shape/chevron`
13234
13258
  }
13235
- ]
13259
+ ],
13260
+ outcome: "ambiguous",
13261
+ phrase: "parallelogram & chevron"
13236
13262
  },
13237
- // 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,
13238
13264
  // light-absorbing surface; the trade means the woven cut-pile construction first.
13239
13265
  {
13240
- defaultTarget: {
13266
+ defaultMeaning: {
13241
13267
  authority: "taxonomy",
13242
- role: "primary",
13268
+ meaningPriority: "primary",
13243
13269
  uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
13244
13270
  },
13245
- 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.",
13246
13272
  governance: lexicalGovernance(
13247
- ORDERED_READING_GOVERNANCE,
13273
+ MEANING_PRIORITY_GOVERNANCE,
13248
13274
  { basis: "authored", source: TAX57_REVIEW_SOURCE },
13249
13275
  TAX57_LIFECYCLE
13250
13276
  ),
13251
- outcome: "ambiguous",
13252
- phrase: "velvet",
13253
- readings: [
13277
+ meanings: [
13254
13278
  {
13255
13279
  authority: "taxonomy",
13256
- role: "primary",
13280
+ meaningPriority: "primary",
13257
13281
  uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
13258
13282
  },
13259
13283
  {
13260
13284
  authority: "taxonomy",
13261
- role: "secondary",
13285
+ meaningPriority: "secondary",
13262
13286
  uri: `${TAXONOMY_BASE_URI}/id/finish/texture/velvety`
13263
13287
  }
13264
- ]
13288
+ ],
13289
+ outcome: "ambiguous",
13290
+ phrase: "velvet"
13265
13291
  },
13266
13292
  // Two observed source spellings on the product-category axis that the inferred
13267
- // readings promoted to customer equivalents. Each is a department label in one
13268
- // 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.
13269
13295
  {
13270
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.",
13271
13297
  governance: lexicalGovernance(
13272
- "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.",
13273
13299
  { basis: "authored", source: "MaterialGraph MG-2226 category review" },
13274
13300
  TAXONOMY_SNAPSHOT_LIFECYCLE
13275
13301
  ),
@@ -13280,7 +13306,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
13280
13306
  {
13281
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.",
13282
13308
  governance: lexicalGovernance(
13283
- "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.",
13284
13310
  { basis: "authored", source: "MaterialGraph MG-2226 category review" },
13285
13311
  TAXONOMY_SNAPSHOT_LIFECYCLE
13286
13312
  ),
@@ -13288,12 +13314,12 @@ var AUTHORED_LEXICAL_ENTRIES = [
13288
13314
  phrase: "electrical",
13289
13315
  reason: "Names a trade, not a kind of product."
13290
13316
  },
13291
- // 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
13292
13318
  // `electrical` were declined: each phrase spans more than the one product category it might name.
13293
13319
  {
13294
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.",
13295
13321
  governance: lexicalGovernance(
13296
- "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.",
13297
13323
  {
13298
13324
  basis: "authored",
13299
13325
  source: "@instruments/taxonomy 1.9.0 vocabulary review"
@@ -13352,15 +13378,15 @@ var lexicalPhrases = (term12) => [term12.slug, term12.label, ...term12.altLabels
13352
13378
  (phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
13353
13379
  );
13354
13380
  var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
13355
- var inferredLifecycle = (readings) => {
13356
- const terms = readings.flatMap((reading) => reading.terms);
13381
+ var inferredLifecycle = (meanings) => {
13382
+ const terms = meanings.flatMap((meaning) => meaning.terms);
13357
13383
  const lifecycles = terms.map((term12) => lifecycleFor(term12));
13358
13384
  const [introducedAt] = terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
13359
13385
  const reviewedAt = terms.map(
13360
13386
  (term12) => term12.reviewedAt ?? term12.introducedAt ?? PUBLISHED_V1_BASELINE
13361
13387
  ).toSorted(compareText).at(-1);
13362
13388
  if (introducedAt === void 0 || reviewedAt === void 0) {
13363
- throw new Error("Inferred lexical reading has no source term lifecycle.");
13389
+ throw new Error("Inferred lexical meaning has no source term lifecycle.");
13364
13390
  }
13365
13391
  const deprecated = lifecycles.every(
13366
13392
  (lifecycle) => lifecycle.status === "deprecated"
@@ -13381,35 +13407,35 @@ var inferredLifecycle = (readings) => {
13381
13407
  };
13382
13408
  var inferredLexicalEntries = () => {
13383
13409
  const authored4 = new Set(
13384
- AUTHORED_LEXICAL_ENTRIES.map((entry) => entry.phrase)
13410
+ AUTHORED_PHRASE_ENTRIES.map((entry) => entry.phrase)
13385
13411
  );
13386
13412
  const targetsByPhrase = /* @__PURE__ */ new Map();
13387
13413
  for (const location of AUTHORING_LOCATIONS) {
13388
13414
  const target = targetForLocation(location);
13389
13415
  for (const phrase of lexicalPhrases(location.term)) {
13390
- const readings = targetsByPhrase.get(phrase) ?? [];
13391
- const existing = readings.find(
13416
+ const meanings = targetsByPhrase.get(phrase) ?? [];
13417
+ const existing = meanings.find(
13392
13418
  (candidate) => targetKey(candidate.target) === targetKey(target)
13393
13419
  );
13394
13420
  if (existing === void 0) {
13395
- readings.push({ target, terms: [location.term] });
13421
+ meanings.push({ target, terms: [location.term] });
13396
13422
  } else {
13397
13423
  existing.terms.push(location.term);
13398
13424
  }
13399
- targetsByPhrase.set(phrase, readings);
13425
+ targetsByPhrase.set(phrase, meanings);
13400
13426
  }
13401
13427
  }
13402
- return [...targetsByPhrase].filter(([phrase]) => !authored4.has(phrase)).map(([phrase, readings]) => {
13403
- const [first, second, ...rest] = readings;
13428
+ return [...targetsByPhrase].filter(([phrase]) => !authored4.has(phrase)).map(([phrase, meanings]) => {
13429
+ const [first, second, ...rest] = meanings;
13404
13430
  if (first === void 0) {
13405
- throw new Error(`Lexical phrase "${phrase}" has no reading.`);
13431
+ throw new Error(`Lexical phrase "${phrase}" has no meaning.`);
13406
13432
  }
13407
- const lifecycle = inferredLifecycle(readings);
13433
+ const lifecycle = inferredLifecycle(meanings);
13408
13434
  if (second === void 0) {
13409
13435
  return {
13410
- explanation: `The published spelling \u201C${phrase}\u201D has one governed reading.`,
13436
+ explanation: `The published spelling \u201C${phrase}\u201D has one governed meaning.`,
13411
13437
  governance: lexicalGovernance(
13412
- "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.",
13413
13439
  {
13414
13440
  basis: "evidenced",
13415
13441
  snapshot: lifecycle.reviewedAt,
@@ -13425,7 +13451,7 @@ var inferredLexicalEntries = () => {
13425
13451
  return {
13426
13452
  explanation: `The published spelling \u201C${phrase}\u201D names more than one governed concept.`,
13427
13453
  governance: lexicalGovernance(
13428
- "No context-independent primary reading has been governed.",
13454
+ "No context-independent primary meaning has been governed.",
13429
13455
  {
13430
13456
  basis: "evidenced",
13431
13457
  snapshot: lifecycle.reviewedAt,
@@ -13433,37 +13459,189 @@ var inferredLexicalEntries = () => {
13433
13459
  },
13434
13460
  lifecycle
13435
13461
  ),
13436
- outcome: "ambiguous",
13437
- phrase,
13438
- readings: [
13462
+ meanings: [
13439
13463
  first.target,
13440
13464
  second.target,
13441
13465
  ...rest.map(({ target }) => target)
13442
- ]
13466
+ ],
13467
+ outcome: "ambiguous",
13468
+ phrase
13443
13469
  };
13444
13470
  });
13445
13471
  };
13446
- var LEXICAL_ENTRIES = [
13447
- ...AUTHORED_LEXICAL_ENTRIES,
13472
+ var PHRASE_ENTRIES = [
13473
+ ...AUTHORED_PHRASE_ENTRIES,
13448
13474
  ...inferredLexicalEntries()
13449
13475
  ].toSorted((left, right) => compareText(left.phrase, right.phrase));
13450
13476
  var revisionOf = (value) => `sha256:${createHash("sha256").update(JSON.stringify(value)).digest("hex")}`;
13451
13477
  var TAXONOMY_CORPUS_REVISION = revisionOf({
13452
13478
  graph: KNOWLEDGE_GRAPH,
13453
- lexicalEntries: LEXICAL_ENTRIES
13479
+ phraseEntries: PHRASE_ENTRIES
13454
13480
  });
13455
13481
  var TAXONOMY_CORPUS_METADATA = {
13456
13482
  edgeCount: KNOWLEDGE_GRAPH.edges.length,
13457
- lexicalEntryCount: LEXICAL_ENTRIES.length,
13458
13483
  nodeCount: KNOWLEDGE_GRAPH.nodes.length,
13484
+ phraseEntryCount: PHRASE_ENTRIES.length,
13459
13485
  revision: TAXONOMY_CORPUS_REVISION,
13460
13486
  snapshot: TAXONOMY_SNAPSHOT,
13461
13487
  version: TAXONOMY_VERSION
13462
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")}`;
13463
13638
  export {
13639
+ ASSESSMENT_AUTHORITY_REFERENCES,
13640
+ ASSESSMENT_POLICY_REVISION,
13464
13641
  COLOR_SCOPE_REFERENCE_KINDS,
13642
+ CONCEPT_ASSESSMENT_POLICIES,
13465
13643
  KNOWLEDGE_GRAPH,
13466
- LEXICAL_ENTRIES,
13644
+ PHRASE_ENTRIES,
13467
13645
  TAXONOMY_BASE_URI,
13468
13646
  TAXONOMY_CORPUS_METADATA,
13469
13647
  TAXONOMY_CORPUS_REVISION,