@instruments/taxonomy 2.6.0 → 2.7.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
@@ -3420,7 +3420,7 @@ var ELEMENT_TERMS = [
3420
3420
 
3421
3421
  // src/crossover-sources.ts
3422
3422
  var RETRIEVAL_LEXICON_SOURCE = "color-material lexicon in a materials-retrieval system (src-05)";
3423
- var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@5feb29b267a7954c135976ede8039f37121afd27:packages/core/data/reference/v1/taxonomy.json";
3423
+ var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@3f490d3cdf26d3af77841a55f0c94cb5e24bb891:packages/core/data/reference/v1/taxonomy.json";
3424
3424
  var BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
3425
3425
  var BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
3426
3426
  var NICKEL_MATERIAL_SOURCE = "https://nickelinstitute.org/en/nickel-applications/";
@@ -11733,361 +11733,398 @@ var MOOD_TERMS = [
11733
11733
  }
11734
11734
  ];
11735
11735
 
11736
+ // src/axes/palette.generated.ts
11737
+ var COLORSCOPE_VERSION = "10.4.0";
11738
+ var COLOUR_LAYER = {
11739
+ "basic-tone": [
11740
+ {
11741
+ altLabels: [],
11742
+ definition: "High-lightness colors inside a family.",
11743
+ hex: null,
11744
+ id: "light",
11745
+ label: "Light",
11746
+ uri: "https://colorscope.materialinstruments.com/id/basic-tone/light"
11747
+ },
11748
+ {
11749
+ altLabels: [],
11750
+ definition: "Canonical product-facing colors inside a family.",
11751
+ hex: null,
11752
+ id: "mid",
11753
+ label: "Medium",
11754
+ uri: "https://colorscope.materialinstruments.com/id/basic-tone/mid"
11755
+ },
11756
+ {
11757
+ altLabels: [],
11758
+ definition: "Low-lightness colors inside a family.",
11759
+ hex: null,
11760
+ id: "dark",
11761
+ label: "Dark",
11762
+ uri: "https://colorscope.materialinstruments.com/id/basic-tone/dark"
11763
+ },
11764
+ {
11765
+ altLabels: [],
11766
+ definition: "Lower-chroma colors inside a family.",
11767
+ hex: null,
11768
+ id: "muted",
11769
+ label: "Muted",
11770
+ uri: "https://colorscope.materialinstruments.com/id/basic-tone/muted"
11771
+ },
11772
+ {
11773
+ altLabels: [],
11774
+ definition: "Higher-chroma colors inside a family.",
11775
+ hex: null,
11776
+ id: "vivid",
11777
+ label: "Vivid",
11778
+ uri: "https://colorscope.materialinstruments.com/id/basic-tone/vivid"
11779
+ }
11780
+ ],
11781
+ family: [
11782
+ {
11783
+ altLabels: [],
11784
+ definition: "Light neutral colors spanning crisp whites, cool whites, soft chalks, and paper-like off-whites.",
11785
+ hex: "#f3efe6",
11786
+ id: "white",
11787
+ label: "White",
11788
+ uri: "https://colorscope.materialinstruments.com/id/family/white"
11789
+ },
11790
+ {
11791
+ altLabels: [],
11792
+ definition: "Warm white and pale cream colors spanning ivory, linen white, vanilla, eggshell, and softened cream tones.",
11793
+ hex: "#f3ead8",
11794
+ id: "cream",
11795
+ label: "Cream",
11796
+ uri: "https://colorscope.materialinstruments.com/id/family/cream"
11797
+ },
11798
+ {
11799
+ altLabels: ["Grey"],
11800
+ definition: "Cool and warm grays spanning mist, stone, slate, pewter, and architectural neutrals.",
11801
+ hex: "#8c8d8f",
11802
+ id: "gray",
11803
+ label: "Gray",
11804
+ uri: "https://colorscope.materialinstruments.com/id/family/gray"
11805
+ },
11806
+ {
11807
+ altLabels: [],
11808
+ definition: "Near-black and black-led colors with mineral, ink, soot, and shadow character.",
11809
+ hex: "#232425",
11810
+ id: "black",
11811
+ label: "Black",
11812
+ uri: "https://colorscope.materialinstruments.com/id/family/black"
11813
+ },
11814
+ {
11815
+ altLabels: [],
11816
+ definition: "Light warm neutrals built from sand, linen, oat, ecru, and mellow mineral undertones.",
11817
+ hex: "#d1c2a5",
11818
+ id: "beige",
11819
+ label: "Beige",
11820
+ uri: "https://colorscope.materialinstruments.com/id/family/beige"
11821
+ },
11822
+ {
11823
+ altLabels: [],
11824
+ definition: "Grey-brown and mushroom neutrals sitting between beige, brown, and grey.",
11825
+ hex: "#8b7d6b",
11826
+ id: "taupe",
11827
+ label: "Taupe",
11828
+ uri: "https://colorscope.materialinstruments.com/id/family/taupe"
11829
+ },
11830
+ {
11831
+ altLabels: [],
11832
+ definition: "Earth and wood colors spanning bark, spice, soil, cocoa, leather, and dark timber tones.",
11833
+ hex: "#7b5738",
11834
+ id: "brown",
11835
+ label: "Brown",
11836
+ uri: "https://colorscope.materialinstruments.com/id/family/brown"
11837
+ },
11838
+ {
11839
+ altLabels: [],
11840
+ definition: "Red-led colors spanning crimson, vermilion, tomato, signal red, and deep wine hues.",
11841
+ hex: "#b4403f",
11842
+ id: "red",
11843
+ label: "Red",
11844
+ uri: "https://colorscope.materialinstruments.com/id/family/red"
11845
+ },
11846
+ {
11847
+ altLabels: [],
11848
+ definition: "Orange-led colors spanning terracotta, rust, clay, amber, spice, and peel-bright hues.",
11849
+ hex: "#c77448",
11850
+ id: "orange",
11851
+ label: "Orange",
11852
+ uri: "https://colorscope.materialinstruments.com/id/family/orange"
11853
+ },
11854
+ {
11855
+ altLabels: [],
11856
+ definition: "Yellow-led colors ranging from straw and butter tones through gold, citrus, and saffron.",
11857
+ hex: "#d5b468",
11858
+ id: "yellow",
11859
+ label: "Yellow",
11860
+ uri: "https://colorscope.materialinstruments.com/id/family/yellow"
11861
+ },
11862
+ {
11863
+ altLabels: [],
11864
+ definition: "Green-led colors spanning sage, herb, leaf, forest, mint, and botanical families.",
11865
+ hex: "#5c8a57",
11866
+ id: "green",
11867
+ label: "Green",
11868
+ uri: "https://colorscope.materialinstruments.com/id/family/green"
11869
+ },
11870
+ {
11871
+ altLabels: ["Blue Green", "Blue-Green"],
11872
+ definition: "Blue-green colors spanning aqua, lagoon, patina, seafoam, and mineral teal tones.",
11873
+ hex: "#4e8e8e",
11874
+ id: "teal",
11875
+ label: "Teal",
11876
+ uri: "https://colorscope.materialinstruments.com/id/family/teal"
11877
+ },
11878
+ {
11879
+ altLabels: [],
11880
+ definition: "Blue-led colors spanning sky, sea, teal-leaning, ink, navy, and mineral blue families.",
11881
+ hex: "#4a6e8e",
11882
+ id: "blue",
11883
+ label: "Blue",
11884
+ uri: "https://colorscope.materialinstruments.com/id/family/blue"
11885
+ },
11886
+ {
11887
+ altLabels: [],
11888
+ definition: "Purple-led colors covering lavender, mauve, plum, indigo, and smoke-violet concepts.",
11889
+ hex: "#7a5a88",
11890
+ id: "purple",
11891
+ label: "Purple",
11892
+ uri: "https://colorscope.materialinstruments.com/id/family/purple"
11893
+ },
11894
+ {
11895
+ altLabels: [],
11896
+ definition: "Pink-led colors spanning powder, rose, salmon, blossom, and berry-pink concepts.",
11897
+ hex: "#c98da0",
11898
+ id: "pink",
11899
+ label: "Pink",
11900
+ uri: "https://colorscope.materialinstruments.com/id/family/pink"
11901
+ }
11902
+ ],
11903
+ palette: [
11904
+ {
11905
+ altLabels: [],
11906
+ definition: "A palette of high vibrancy that does not spread across three or more distinct hues.",
11907
+ hex: null,
11908
+ id: "vibrant",
11909
+ label: "Vibrant",
11910
+ uri: "https://colorscope.materialinstruments.com/id/palette/vibrant"
11911
+ },
11912
+ {
11913
+ altLabels: [],
11914
+ definition: "A palette of low vibrancy and middle lightness: the default when no other composition applies.",
11915
+ hex: null,
11916
+ id: "muted",
11917
+ label: "Muted",
11918
+ uri: "https://colorscope.materialinstruments.com/id/palette/muted"
11919
+ },
11920
+ {
11921
+ altLabels: [],
11922
+ definition: "A palette whose proportion-weighted lightness is low, and which is neither monochrome nor vibrant.",
11923
+ hex: null,
11924
+ id: "dark",
11925
+ label: "Dark",
11926
+ uri: "https://colorscope.materialinstruments.com/id/palette/dark"
11927
+ },
11928
+ {
11929
+ altLabels: [],
11930
+ definition: "A palette whose proportion-weighted lightness is high, and which is neither monochrome nor vibrant.",
11931
+ hex: null,
11932
+ id: "light",
11933
+ label: "Light",
11934
+ uri: "https://colorscope.materialinstruments.com/id/palette/light"
11935
+ },
11936
+ {
11937
+ altLabels: [],
11938
+ definition: "A palette built from a single hue with little variety between its colors.",
11939
+ hex: null,
11940
+ id: "monochrome",
11941
+ label: "Monochrome",
11942
+ uri: "https://colorscope.materialinstruments.com/id/palette/monochrome"
11943
+ },
11944
+ {
11945
+ altLabels: [],
11946
+ definition: "A palette of high vibrancy spread across three or more distinct hues.",
11947
+ hex: null,
11948
+ id: "colorful",
11949
+ label: "Colorful",
11950
+ uri: "https://colorscope.materialinstruments.com/id/palette/colorful"
11951
+ }
11952
+ ],
11953
+ temperature: [
11954
+ {
11955
+ altLabels: [],
11956
+ definition: "The strongest cool reading: a highly chromatic color in the cyan to blue-violet hues.",
11957
+ hex: null,
11958
+ id: "cold",
11959
+ label: "Cold",
11960
+ uri: "https://colorscope.materialinstruments.com/id/temperature/cold"
11961
+ },
11962
+ {
11963
+ altLabels: [],
11964
+ definition: "A color that reads cool: blue-green to violet hues at modest chroma, and strongly chromatic greens and magentas.",
11965
+ hex: null,
11966
+ id: "cool",
11967
+ label: "Cool",
11968
+ uri: "https://colorscope.materialinstruments.com/id/temperature/cool"
11969
+ },
11970
+ {
11971
+ altLabels: [],
11972
+ definition: "Neither warm nor cool: achromatic colors, and weakly chromatic ones in the yellow-green, green and magenta hues.",
11973
+ hex: null,
11974
+ id: "neutral",
11975
+ label: "Neutral",
11976
+ uri: "https://colorscope.materialinstruments.com/id/temperature/neutral"
11977
+ },
11978
+ {
11979
+ altLabels: [],
11980
+ definition: "A color that reads warm: red, orange and yellow hues at modest chroma, and strongly chromatic yellow-greens.",
11981
+ hex: null,
11982
+ id: "warm",
11983
+ label: "Warm",
11984
+ uri: "https://colorscope.materialinstruments.com/id/temperature/warm"
11985
+ },
11986
+ {
11987
+ altLabels: [],
11988
+ definition: "The strongest warm reading: a highly chromatic red, orange or yellow.",
11989
+ hex: null,
11990
+ id: "hot",
11991
+ label: "Hot",
11992
+ uri: "https://colorscope.materialinstruments.com/id/temperature/hot"
11993
+ }
11994
+ ]
11995
+ };
11996
+
11736
11997
  // src/axes/palette.ts
11737
- var COLOUR_MOOD = "colour_mood, a mood dictionary in a materials-retrieval system (src-05)";
11738
- var SNAPSHOT5 = "2026-08-21";
11998
+ var COLOUR_LAYER_DATE = "2026-10-23";
11999
+ var V1_BASELINE = "2026-08-30";
11739
12000
  var COLORSCOPE_AUTHORITY_URI = "https://colorscope.materialinstruments.com";
11740
- var PALETTE_MOOD = "palette-mood";
11741
- var colorScopeAuthority = (identifier, referenceKind) => ({
11742
- authority: "colorscope",
11743
- authorityUri: COLORSCOPE_AUTHORITY_URI,
11744
- identifier,
11745
- referenceKind
11746
- });
11747
- var PALETTE_HUE_TERMS = [
11748
- {
11749
- altLabels: ["pure white", "cool white", "soft white"],
11750
- external: [
11751
- {
11752
- identifier: "Q23444",
11753
- label: "white",
11754
- match: "close",
11755
- scheme: "wikidata"
11756
- }
11757
- ],
11758
- label: "White",
11759
- searchedWithout: [searchedUniclass3("White colour")],
11760
- slug: "white"
11761
- },
11762
- {
11763
- altLabels: ["ivory", "warm white", "off-white"],
11764
- external: [
11765
- {
11766
- identifier: "Q2730433",
11767
- label: "cream",
11768
- match: "close",
11769
- scheme: "wikidata"
11770
- }
11771
- ],
11772
- label: "Cream",
11773
- searchedWithout: [searchedUniclass3("Cream colour")],
11774
- slug: "cream"
11775
- },
11776
- {
11777
- altLabels: ["neutral grey", "grey"],
11778
- external: [
11779
- {
11780
- identifier: "Q42519",
11781
- label: "grey",
11782
- match: "close",
11783
- scheme: "wikidata"
11784
- }
11785
- ],
11786
- label: "Grey",
11787
- searchedWithout: [searchedUniclass3("Grey colour")],
11788
- seenAs: ["Gray"],
11789
- slug: "gray"
11790
- },
11791
- {
11792
- altLabels: ["near-black", "ink black", "coal"],
11793
- external: [
11794
- {
11795
- identifier: "Q23445",
11796
- label: "black",
11797
- match: "close",
11798
- scheme: "wikidata"
11799
- }
11800
- ],
11801
- label: "Black",
11802
- searchedWithout: [searchedUniclass3("Black colour")],
11803
- slug: "black"
11804
- },
11805
- {
11806
- altLabels: ["warm neutral", "sand"],
11807
- external: [
11808
- {
11809
- identifier: "Q843607",
11810
- label: "beige",
11811
- match: "close",
11812
- scheme: "wikidata"
11813
- }
11814
- ],
11815
- label: "Beige",
11816
- searchedWithout: [searchedUniclass3("Beige colour")],
11817
- slug: "beige"
11818
- },
11819
- {
11820
- altLabels: ["greige", "mushroom", "putty"],
11821
- external: [
11822
- {
11823
- identifier: "Q2307593",
11824
- label: "taupe",
11825
- match: "close",
11826
- scheme: "wikidata"
11827
- }
11828
- ],
11829
- label: "Taupe",
11830
- searchedWithout: [searchedUniclass3("Taupe colour")],
11831
- slug: "taupe"
11832
- },
11833
- {
11834
- altLabels: ["earth brown", "wood brown", "russet"],
11835
- external: [
11836
- {
11837
- identifier: "Q47071",
11838
- label: "brown",
11839
- match: "close",
11840
- scheme: "wikidata"
11841
- }
11842
- ],
11843
- label: "Brown",
11844
- searchedWithout: [searchedUniclass3("Brown colour")],
11845
- slug: "brown"
11846
- },
11847
- {
11848
- altLabels: ["crimson", "scarlet", "carmine"],
11849
- external: [
11850
- {
11851
- identifier: "Q3142",
11852
- label: "red",
11853
- match: "close",
11854
- scheme: "wikidata"
11855
- }
11856
- ],
11857
- label: "Red",
11858
- searchedWithout: [searchedUniclass3("Red colour")],
11859
- slug: "red"
11860
- },
11861
- {
11862
- altLabels: ["rust"],
11863
- external: [
11864
- {
11865
- identifier: "Q39338",
11866
- label: "orange",
11867
- match: "close",
11868
- scheme: "wikidata"
11869
- }
11870
- ],
11871
- label: "Orange",
11872
- searchedWithout: [searchedUniclass3("Orange colour")],
11873
- slug: "orange"
11874
- },
11875
- {
11876
- altLabels: ["mustard", "ochre"],
11877
- external: [
11878
- {
11879
- identifier: "Q943",
11880
- label: "yellow",
11881
- match: "close",
11882
- scheme: "wikidata"
11883
- }
11884
- ],
11885
- label: "Yellow",
11886
- searchedWithout: [searchedUniclass3("Yellow colour")],
11887
- slug: "yellow"
11888
- },
11889
- {
11890
- altLabels: ["sage", "olive"],
11891
- external: [
11892
- {
11893
- identifier: "Q3133",
11894
- label: "green",
11895
- match: "close",
11896
- scheme: "wikidata"
11897
- }
11898
- ],
11899
- label: "Green",
11900
- searchedWithout: [searchedUniclass3("Green colour")],
11901
- slug: "green"
11902
- },
11903
- {
11904
- altLabels: ["aqua", "turquoise"],
11905
- external: [
11906
- {
11907
- identifier: "Q1078214",
11908
- label: "teal",
11909
- match: "close",
11910
- scheme: "wikidata"
11911
- }
11912
- ],
11913
- label: "Teal",
11914
- searchedWithout: [searchedUniclass3("Teal colour")],
11915
- slug: "teal"
11916
- },
11917
- {
11918
- altLabels: ["navy", "indigo"],
11919
- external: [
11920
- {
11921
- identifier: "Q1088",
11922
- label: "blue",
11923
- match: "close",
11924
- scheme: "wikidata"
11925
- }
11926
- ],
11927
- label: "Blue",
11928
- searchedWithout: [searchedUniclass3("Blue colour")],
11929
- slug: "blue"
11930
- },
11931
- {
11932
- altLabels: ["violet", "mauve"],
11933
- external: [
11934
- {
11935
- identifier: "Q3257809",
11936
- label: "purple",
11937
- match: "close",
11938
- scheme: "wikidata"
11939
- }
11940
- ],
11941
- label: "Purple",
11942
- searchedWithout: [searchedUniclass3("Purple colour")],
11943
- slug: "purple"
11944
- },
11945
- {
11946
- altLabels: ["rose", "blush"],
11947
- external: [
11948
- {
11949
- identifier: "Q429220",
11950
- label: "pink",
11951
- match: "close",
11952
- scheme: "wikidata"
11953
- }
11954
- ],
11955
- label: "Pink",
11956
- searchedWithout: [searchedUniclass3("Pink colour")],
11957
- slug: "pink"
11958
- }
11959
- ].map((term12) => ({
11960
- ...term12,
11961
- canonicalAuthority: colorScopeAuthority(term12.slug, "color-family"),
11962
- provenance: {
11963
- basis: "vendored",
11964
- snapshot: SNAPSHOT5,
11965
- source: "@instruments/colorscope COLOR_FAMILIES"
11966
- }
11967
- }));
11968
- var PALETTE_TEMPERATURE_TERMS = [
11969
- {
11970
- definition: "Dominant color casts to the warm side of the OKLab warmth axis.",
11971
- label: "Warm",
11972
- searchedWithout: [searchedUniclass3("Warm colour")],
11973
- slug: "warm"
11974
- },
11975
- {
11976
- definition: "Dominant color casts to the cool side of the OKLab warmth axis.",
11977
- label: "Cool",
11978
- searchedWithout: [searchedUniclass3("Cool colour")],
11979
- slug: "cool"
11980
- },
11981
- {
11982
- definition: "No decisive cast either way.",
11983
- label: "Neutral",
11984
- searchedWithout: [searchedUniclass3("Neutral colour")],
11985
- slug: "neutral"
11986
- }
11987
- ].map((term12) => ({
11988
- ...term12,
11989
- canonicalAuthority: colorScopeAuthority(term12.slug, "temperature-level"),
11990
- provenance: {
11991
- basis: "vendored",
11992
- snapshot: SNAPSHOT5,
11993
- source: "colour_undertone, an undertone dictionary in a materials-retrieval system (src-05)"
11994
- }
11995
- }));
12001
+ var LAYER_SOURCE = `@materialinstruments/colorscope ${COLORSCOPE_VERSION} identities`;
12002
+ var COLOUR_LAYER_KINDS = {
12003
+ composition: { colorScopeKind: "palette", referenceKind: "palette-mood" },
12004
+ family: { colorScopeKind: "family", referenceKind: "color-family" },
12005
+ temperature: {
12006
+ colorScopeKind: "temperature",
12007
+ referenceKind: "temperature-level"
12008
+ },
12009
+ tone: { colorScopeKind: "basic-tone", referenceKind: "basic-tone" }
12010
+ };
12011
+ var PALETTE_LABEL_OVERRIDES = {
12012
+ "composition/colorful": "Polychrome"
12013
+ };
12014
+ var termFor = (facet, entry) => {
12015
+ const { referenceKind } = COLOUR_LAYER_KINDS[facet];
12016
+ const override = PALETTE_LABEL_OVERRIDES[`${facet}/${entry.id}`];
12017
+ const altLabels = override === void 0 ? entry.altLabels : [entry.label, ...entry.altLabels];
12018
+ return {
12019
+ ...altLabels.length === 0 ? {} : { altLabels },
12020
+ canonicalAuthority: {
12021
+ authority: "colorscope",
12022
+ authorityUri: COLORSCOPE_AUTHORITY_URI,
12023
+ identifier: entry.id,
12024
+ referenceKind,
12025
+ uri: entry.uri
12026
+ },
12027
+ ...entry.definition === null ? {} : { definition: entry.definition },
12028
+ ...entry.hex === null ? {} : { hex: entry.hex },
12029
+ introducedAt: COLOUR_LAYER_DATE,
12030
+ label: override ?? entry.label,
12031
+ ...override === void 0 ? {} : {
12032
+ note: `ColorScope labels this concept ${entry.label}; Taxonomy reads it as ${override}.`
12033
+ },
12034
+ provenance: {
12035
+ basis: "vendored",
12036
+ snapshot: COLOUR_LAYER_DATE,
12037
+ source: LAYER_SOURCE
12038
+ },
12039
+ reviewedAt: COLOUR_LAYER_DATE,
12040
+ slug: entry.id
12041
+ };
12042
+ };
12043
+ var layerTerms = (facet) => COLOUR_LAYER[COLOUR_LAYER_KINDS[facet].colorScopeKind].map(
12044
+ (entry) => termFor(facet, entry)
12045
+ );
12046
+ var PALETTE_FAMILY_TERMS = layerTerms("family");
12047
+ var PALETTE_TEMPERATURE_TERMS = layerTerms("temperature");
12048
+ var PALETTE_TONE_TERMS = layerTerms("tone");
12049
+ var PALETTE_COMPOSITION_TERMS = layerTerms("composition");
12050
+ var COLORSCOPE_WASHED_URI = `${COLORSCOPE_AUTHORITY_URI}/id/modifier/washed`;
11996
12051
  var PALETTE_CHARACTER_TERMS = [
11997
- {
11998
- canonicalAuthority: colorScopeAuthority("vibrant", PALETTE_MOOD),
11999
- definition: "High chroma; color is the loudest thing in the scheme.",
12000
- label: "Vibrant",
12001
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12002
- searchedWithout: [searchedUniclass3("Vibrant colour")],
12003
- slug: "vibrant"
12004
- },
12005
- {
12006
- canonicalAuthority: colorScopeAuthority("muted", PALETTE_MOOD),
12007
- definition: "Chroma held low by design, with the colors still fully present.",
12008
- label: "Muted",
12009
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12010
- searchedWithout: [searchedUniclass3("Muted colour")],
12011
- slug: "muted"
12012
- },
12013
12052
  {
12014
12053
  altLabels: ["sun-bleached", "washed"],
12015
12054
  definition: "Chroma reduced as if by age, wear or light, rather than chosen low. Distinct from muted: faded implies a stronger original.",
12016
12055
  label: "Faded",
12017
- note: "Authored here. Two estate vocabularies need it (a rendering pipeline's `faded` keyword and `sun-bleached-mediterranean`) and colorscope's palette moods do not reach it.",
12056
+ note: "Deprecated in 2.7.0. ColorScope owns colour, and its `washed` modifier now carries faded, sun-bleached and washed as alternate labels. Use the ColorScope concept; this URI keeps resolving.",
12018
12057
  provenance: { basis: "authored", source: "@instruments/taxonomy ADR 0001" },
12019
- searchedWithout: [searchedUniclass3("Faded colour")],
12020
- slug: "faded"
12058
+ reviewedAt: COLOUR_LAYER_DATE,
12059
+ slug: "faded",
12060
+ status: "deprecated",
12061
+ supersededByReference: COLORSCOPE_WASHED_URI
12062
+ }
12063
+ ];
12064
+ var TAXONOMY_FACET_BASE = "https://taxonomy.materialinstruments.com/id/facet";
12065
+ var layerGovernance = (introducedAt) => ({
12066
+ introducedAt,
12067
+ provenance: {
12068
+ basis: "vendored",
12069
+ snapshot: COLOUR_LAYER_DATE,
12070
+ source: LAYER_SOURCE
12071
+ },
12072
+ reviewedAt: COLOUR_LAYER_DATE
12073
+ });
12074
+ var deprecatedFacetGovernance = (successor) => ({
12075
+ introducedAt: V1_BASELINE,
12076
+ provenance: {
12077
+ basis: "authored",
12078
+ source: "@instruments/taxonomy published corpus"
12021
12079
  },
12080
+ reviewedAt: COLOUR_LAYER_DATE,
12081
+ status: "deprecated",
12082
+ supersededByReference: `${TAXONOMY_FACET_BASE}/palette/${successor}`
12083
+ });
12084
+ var PALETTE_FACET_GOVERNANCE = {
12085
+ character: deprecatedFacetGovernance("composition"),
12086
+ composition: layerGovernance(COLOUR_LAYER_DATE),
12087
+ family: layerGovernance(COLOUR_LAYER_DATE),
12088
+ hue: deprecatedFacetGovernance("family"),
12089
+ temperature: layerGovernance(V1_BASELINE),
12090
+ tone: layerGovernance(COLOUR_LAYER_DATE)
12091
+ };
12092
+ var PALETTE_AXIS_FACETS = [
12022
12093
  {
12023
- canonicalAuthority: colorScopeAuthority("mid", "lightness-level"),
12024
- definition: "Mid-range lightness across the scheme: neither pale nor deep. The midpoint that `light` and `dark` imply and neither states.",
12025
- label: "Mid",
12026
- note: "NOT authored here, and the first draft of this term was the exact mistake this package exists to stop. A paint-sample retailer bands every sample as light, medium or dark and the midpoint is its largest band, so a `medium` term was minted for it - without checking that colorscope already governs a five-level lightness scale with `mid` in the middle. An eighth vocabulary coining a word a governed vocabulary already had. Corrected to colorscope's id, with the retailer's spelling recorded under Seen in the wild where it belongs.",
12027
- provenance: {
12028
- basis: "vendored",
12029
- snapshot: SNAPSHOT5,
12030
- source: "@instruments/colorscope COLOR_LIGHTNESS_LEVELS"
12031
- },
12032
- searchedWithout: [searchedUniclass3("Mid colour")],
12033
- seenAs: ["medium", "Medium", "normal"],
12034
- slug: "mid"
12094
+ governance: PALETTE_FACET_GOVERNANCE.family,
12095
+ label: "Family",
12096
+ slug: "family",
12097
+ terms: PALETTE_FAMILY_TERMS
12035
12098
  },
12036
12099
  {
12037
- canonicalAuthority: colorScopeAuthority("dark", PALETTE_MOOD),
12038
- definition: "Low overall lightness across the scheme.",
12039
- label: "Dark",
12040
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12041
- searchedWithout: [searchedUniclass3("Dark colour")],
12042
- slug: "dark"
12100
+ governance: PALETTE_FACET_GOVERNANCE.temperature,
12101
+ label: "Temperature",
12102
+ slug: "temperature",
12103
+ terms: PALETTE_TEMPERATURE_TERMS
12043
12104
  },
12044
12105
  {
12045
- canonicalAuthority: colorScopeAuthority("light", PALETTE_MOOD),
12046
- definition: "High overall lightness across the scheme.",
12047
- label: "Light",
12048
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12049
- searchedWithout: [searchedUniclass3("Light colour")],
12050
- slug: "light"
12106
+ governance: PALETTE_FACET_GOVERNANCE.tone,
12107
+ label: "Tone",
12108
+ slug: "tone",
12109
+ terms: PALETTE_TONE_TERMS
12051
12110
  },
12052
12111
  {
12053
- canonicalAuthority: colorScopeAuthority("monochrome", PALETTE_MOOD),
12054
- definition: "One hue, or none; the scheme varies by lightness rather than by color.",
12055
- external: [
12056
- {
12057
- identifier: "Q10770146",
12058
- label: "monochrome",
12059
- match: "close",
12060
- scheme: "wikidata"
12061
- }
12062
- ],
12063
- label: "Monochrome",
12064
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12065
- searchedWithout: [searchedUniclass3("Monochrome colour")],
12066
- slug: "monochrome"
12112
+ governance: PALETTE_FACET_GOVERNANCE.composition,
12113
+ label: "Composition",
12114
+ slug: "composition",
12115
+ terms: PALETTE_COMPOSITION_TERMS
12067
12116
  },
12068
12117
  {
12069
- altLabels: ["polychrome"],
12070
- canonicalAuthority: colorScopeAuthority("colorful", PALETTE_MOOD),
12071
- definition: "Many hues held together deliberately.",
12072
- label: "Polychrome",
12073
- provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
12074
- searchedWithout: [searchedUniclass3("Polychrome colour")],
12075
- seenAs: ["colorful"],
12076
- slug: "colorful"
12118
+ governance: PALETTE_FACET_GOVERNANCE.hue,
12119
+ label: "Hue",
12120
+ slug: "hue",
12121
+ terms: []
12077
12122
  },
12078
12123
  {
12079
- altLabels: ["jewel-toned"],
12080
- canonicalAuthority: colorScopeAuthority("saturated", "chroma-level"),
12081
- 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.",
12082
- label: "Saturated",
12083
- 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.",
12084
- provenance: {
12085
- basis: "vendored",
12086
- snapshot: SNAPSHOT5,
12087
- source: "@instruments/colorscope COLOR_CHROMA_LEVELS"
12088
- },
12089
- searchedWithout: [searchedUniclass3("Saturated colour")],
12090
- slug: "saturated"
12124
+ governance: PALETTE_FACET_GOVERNANCE.character,
12125
+ label: "Character",
12126
+ slug: "character",
12127
+ terms: PALETTE_CHARACTER_TERMS
12091
12128
  }
12092
12129
  ];
12093
12130
 
@@ -12871,7 +12908,7 @@ var PATTERN_MOTIF_TERMS = MOTIF_DRAFTS.map(grounded);
12871
12908
 
12872
12909
  // src/axes/pattern.ts
12873
12910
  var SOURCE4 = "pattern vocabulary in a furnishings retailer (src-03)";
12874
- var SNAPSHOT6 = "2026-08-25";
12911
+ var SNAPSHOT5 = "2026-08-25";
12875
12912
  var GEOMETRY_REVIEW_DATE = "2026-08-31";
12876
12913
  var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
12877
12914
  var REVIEW_DATE7 = "2026-09-11";
@@ -12882,7 +12919,7 @@ var TAX58_SOURCE = "Linear TAX-58 visual-vocabulary review; MG-2218 reconciliati
12882
12919
  var term7 = (slug, label, definition, extra = {}) => ({
12883
12920
  definition,
12884
12921
  label,
12885
- provenance: { basis: "evidenced", snapshot: SNAPSHOT6, source: SOURCE4 },
12922
+ provenance: { basis: "evidenced", snapshot: SNAPSHOT5, source: SOURCE4 },
12886
12923
  slug,
12887
12924
  ...extra
12888
12925
  });
@@ -13624,7 +13661,7 @@ var PERIOD_TERMS = [
13624
13661
  ];
13625
13662
 
13626
13663
  // src/axes/place.ts
13627
- var SNAPSHOT7 = "2026-08-21";
13664
+ var SNAPSHOT6 = "2026-08-21";
13628
13665
  var ADR2 = "@instruments/taxonomy ADR 0001";
13629
13666
  var PLATFORM_CONTEXTS = "CONTEXTS in an architecture-projects platform (src-01)";
13630
13667
  var aat7 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
@@ -13639,7 +13676,7 @@ var PLACE_REGION_TERMS = [
13639
13676
  label: "Mediterranean",
13640
13677
  provenance: {
13641
13678
  basis: "evidenced",
13642
- snapshot: SNAPSHOT7,
13679
+ snapshot: SNAPSHOT6,
13643
13680
  source: "a rendering pipeline (src-08) and an architecture-projects platform (src-01)"
13644
13681
  },
13645
13682
  slug: "mediterranean"
@@ -13691,7 +13728,7 @@ var PLACE_REGION_TERMS = [
13691
13728
  label: "Nordic",
13692
13729
  provenance: {
13693
13730
  basis: "evidenced",
13694
- snapshot: SNAPSHOT7,
13731
+ snapshot: SNAPSHOT6,
13695
13732
  source: "an editorial image library (src-02), an architecture-projects platform (src-01) and a materials-retrieval system (src-05)"
13696
13733
  },
13697
13734
  seenAs: ["Nordic modern", "nordic_warm", "Scandinavian"],
@@ -13711,7 +13748,7 @@ var PLACE_REGION_TERMS = [
13711
13748
  label: "Japanese",
13712
13749
  provenance: {
13713
13750
  basis: "evidenced",
13714
- snapshot: SNAPSHOT7,
13751
+ snapshot: SNAPSHOT6,
13715
13752
  source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
13716
13753
  },
13717
13754
  seenAs: ["Japanese contemporary"],
@@ -13723,7 +13760,7 @@ var PLACE_REGION_TERMS = [
13723
13760
  label: "English Country",
13724
13761
  provenance: {
13725
13762
  basis: "evidenced",
13726
- snapshot: SNAPSHOT7,
13763
+ snapshot: SNAPSHOT6,
13727
13764
  source: "an editorial image library (src-02) and a furnishings retailer (src-03)"
13728
13765
  },
13729
13766
  seenAs: ["English Country", "Country"],
@@ -13844,7 +13881,7 @@ var PLACE_LANDSCAPE_TERMS = [
13844
13881
  label: "Coastal",
13845
13882
  provenance: {
13846
13883
  basis: "evidenced",
13847
- snapshot: SNAPSHOT7,
13884
+ snapshot: SNAPSHOT6,
13848
13885
  source: "CONTEXTS in an architecture-projects platform (src-01), a furnishings retailer (src-03), an editorial image library (src-02), a rendering pipeline (src-08) and a materials-retrieval system (src-05)"
13849
13886
  },
13850
13887
  slug: "coastal",
@@ -13860,7 +13897,7 @@ var PLACE_LANDSCAPE_TERMS = [
13860
13897
  label: "Waterfront",
13861
13898
  provenance: {
13862
13899
  basis: "vendored",
13863
- snapshot: SNAPSHOT7,
13900
+ snapshot: SNAPSHOT6,
13864
13901
  source: PLATFORM_CONTEXTS
13865
13902
  },
13866
13903
  related: [relatedTo12("place.landscape.coastal")],
@@ -13872,7 +13909,7 @@ var PLACE_LANDSCAPE_TERMS = [
13872
13909
  label: "Tropical",
13873
13910
  provenance: {
13874
13911
  basis: "evidenced",
13875
- snapshot: SNAPSHOT7,
13912
+ snapshot: SNAPSHOT6,
13876
13913
  source: "an architecture-projects platform (src-01)"
13877
13914
  },
13878
13915
  seenAs: ["Tropical modernism"],
@@ -13892,7 +13929,7 @@ var PLACE_LANDSCAPE_TERMS = [
13892
13929
  label: "Desert",
13893
13930
  provenance: {
13894
13931
  basis: "vendored",
13895
- snapshot: SNAPSHOT7,
13932
+ snapshot: SNAPSHOT6,
13896
13933
  source: PLATFORM_CONTEXTS
13897
13934
  },
13898
13935
  slug: "desert"
@@ -13913,7 +13950,7 @@ var PLACE_LANDSCAPE_TERMS = [
13913
13950
  label: "Mountain",
13914
13951
  provenance: {
13915
13952
  basis: "vendored",
13916
- snapshot: SNAPSHOT7,
13953
+ snapshot: SNAPSHOT6,
13917
13954
  source: PLATFORM_CONTEXTS
13918
13955
  },
13919
13956
  slug: "mountain"
@@ -13932,7 +13969,7 @@ var PLACE_LANDSCAPE_TERMS = [
13932
13969
  label: "Forest",
13933
13970
  provenance: {
13934
13971
  basis: "vendored",
13935
- snapshot: SNAPSHOT7,
13972
+ snapshot: SNAPSHOT6,
13936
13973
  source: PLATFORM_CONTEXTS
13937
13974
  },
13938
13975
  slug: "forest"
@@ -13952,7 +13989,7 @@ var PLACE_LANDSCAPE_TERMS = [
13952
13989
  label: "Rural",
13953
13990
  provenance: {
13954
13991
  basis: "vendored",
13955
- snapshot: SNAPSHOT7,
13992
+ snapshot: SNAPSHOT6,
13956
13993
  source: PLATFORM_CONTEXTS
13957
13994
  },
13958
13995
  slug: "rural"
@@ -13971,7 +14008,7 @@ var PLACE_LANDSCAPE_TERMS = [
13971
14008
  label: "Suburban",
13972
14009
  provenance: {
13973
14010
  basis: "vendored",
13974
- snapshot: SNAPSHOT7,
14011
+ snapshot: SNAPSHOT6,
13975
14012
  source: PLATFORM_CONTEXTS
13976
14013
  },
13977
14014
  related: [relatedTo12("place.landscape.urban")],
@@ -13992,7 +14029,7 @@ var PLACE_LANDSCAPE_TERMS = [
13992
14029
  label: "Urban",
13993
14030
  provenance: {
13994
14031
  basis: "vendored",
13995
- snapshot: SNAPSHOT7,
14032
+ snapshot: SNAPSHOT6,
13996
14033
  source: PLATFORM_CONTEXTS
13997
14034
  },
13998
14035
  seenAs: ["Dense urban", "Urban infill", "downtown"],
@@ -14912,11 +14949,11 @@ var PRODUCT_CATEGORY_TERMS = [
14912
14949
 
14913
14950
  // src/axes/requirement.ts
14914
14951
  var SOURCE5 = "in-house residential and commercial project requirements";
14915
- var SNAPSHOT8 = "2026-08-25";
14952
+ var SNAPSHOT7 = "2026-08-25";
14916
14953
  var term9 = (slug, label, definition, extra = {}) => ({
14917
14954
  definition,
14918
14955
  label,
14919
- provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: SOURCE5 },
14956
+ provenance: { basis: "evidenced", snapshot: SNAPSHOT7, source: SOURCE5 },
14920
14957
  slug,
14921
14958
  ...extra
14922
14959
  });
@@ -18181,7 +18218,7 @@ var SECTOR_IDS = new Set(
18181
18218
 
18182
18219
  // src/axes/style-shared.ts
18183
18220
  var PLATFORM_STYLES_SOURCE = "STYLES in an architecture-projects platform (src-01)";
18184
- var SNAPSHOT9 = "2026-08-21";
18221
+ var SNAPSHOT8 = "2026-08-21";
18185
18222
  var MOVEMENT = "movement";
18186
18223
  var aat12 = (slug, label, match) => ({
18187
18224
  identifier: slug,
@@ -18219,7 +18256,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18219
18256
  label: "Postmodernism",
18220
18257
  provenance: {
18221
18258
  basis: "vendored",
18222
- snapshot: SNAPSHOT9,
18259
+ snapshot: SNAPSHOT8,
18223
18260
  source: PLATFORM_STYLES_SOURCE
18224
18261
  },
18225
18262
  related: [influencedBy("style.modernism"), evokes(LATE_CENTURY)],
@@ -18240,7 +18277,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18240
18277
  label: "Deconstructivism",
18241
18278
  provenance: {
18242
18279
  basis: "vendored",
18243
- snapshot: SNAPSHOT9,
18280
+ snapshot: SNAPSHOT8,
18244
18281
  source: PLATFORM_STYLES_SOURCE
18245
18282
  },
18246
18283
  related: [influencedBy("style.constructivism"), evokes(LATE_CENTURY)],
@@ -18253,7 +18290,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18253
18290
  label: "Parametricism",
18254
18291
  provenance: {
18255
18292
  basis: "vendored",
18256
- snapshot: SNAPSHOT9,
18293
+ snapshot: SNAPSHOT8,
18257
18294
  source: PLATFORM_STYLES_SOURCE
18258
18295
  },
18259
18296
  related: [evokes("period.contemporary")],
@@ -18282,7 +18319,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18282
18319
  label: "High-Tech",
18283
18320
  provenance: {
18284
18321
  basis: "vendored",
18285
- snapshot: SNAPSHOT9,
18322
+ snapshot: SNAPSHOT8,
18286
18323
  source: PLATFORM_STYLES_SOURCE
18287
18324
  },
18288
18325
  related: [evokes(LATE_CENTURY)],
@@ -18303,7 +18340,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18303
18340
  label: "Rationalism",
18304
18341
  provenance: {
18305
18342
  basis: "vendored",
18306
- snapshot: SNAPSHOT9,
18343
+ snapshot: SNAPSHOT8,
18307
18344
  source: PLATFORM_STYLES_SOURCE
18308
18345
  },
18309
18346
  related: [evokes("period.interwar")],
@@ -18324,7 +18361,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18324
18361
  label: "Constructivism",
18325
18362
  provenance: {
18326
18363
  basis: "vendored",
18327
- snapshot: SNAPSHOT9,
18364
+ snapshot: SNAPSHOT8,
18328
18365
  source: PLATFORM_STYLES_SOURCE
18329
18366
  },
18330
18367
  related: [evokes("period.interwar")],
@@ -18346,7 +18383,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
18346
18383
  label: "Organic Modernism",
18347
18384
  provenance: {
18348
18385
  basis: "vendored",
18349
- snapshot: SNAPSHOT9,
18386
+ snapshot: SNAPSHOT8,
18350
18387
  source: PLATFORM_STYLES_SOURCE
18351
18388
  },
18352
18389
  seenAs: ["Organic", "quiet_organic"],
@@ -18376,7 +18413,7 @@ var STYLE_TERMS = [
18376
18413
  }
18377
18414
  ],
18378
18415
  label: "Minimalism",
18379
- provenance: { basis: "evidenced", snapshot: SNAPSHOT9, source: ESTATE3 },
18416
+ provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: ESTATE3 },
18380
18417
  seenAs: [
18381
18418
  "serene-minimal",
18382
18419
  "minimal_warm",
@@ -18418,7 +18455,7 @@ var STYLE_TERMS = [
18418
18455
  note: 'NOT the consumer sense of "modern". A consumer calling a room modern usually means it is current and clean-lined, which is `contemporary` here. The two are separate terms and the crosswalk from an ambiguous source label declines rather than guessing. See ADR 0001.',
18419
18456
  provenance: {
18420
18457
  basis: "evidenced",
18421
- snapshot: SNAPSHOT9,
18458
+ snapshot: SNAPSHOT8,
18422
18459
  source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
18423
18460
  },
18424
18461
  slug: "modernism",
@@ -18445,7 +18482,7 @@ var STYLE_TERMS = [
18445
18482
  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.",
18446
18483
  provenance: {
18447
18484
  basis: "evidenced",
18448
- snapshot: SNAPSHOT9,
18485
+ snapshot: SNAPSHOT8,
18449
18486
  source: "an architecture-projects platform (src-01), an editorial image library (src-02), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
18450
18487
  },
18451
18488
  related: [{ predicate: "evokes", target: "period.mid-century" }],
@@ -18459,7 +18496,7 @@ var STYLE_TERMS = [
18459
18496
  note: "DELIBERATELY TIME-RELATIVE, and the only term here that is. What it denotes moves; the id does not. Consumers distinguish it from `modern` in practice - a furnishings retailer carries both at similar volume - without anyone having written down how. `period.contemporary` is a different thing on a different axis; the prefix disambiguates.",
18460
18497
  provenance: {
18461
18498
  basis: "evidenced",
18462
- snapshot: SNAPSHOT9,
18499
+ snapshot: SNAPSHOT8,
18463
18500
  source: "a furnishings retailer (src-03), a rendering pipeline (src-08) and a materials-retrieval system (src-05)"
18464
18501
  },
18465
18502
  related: [relatedTo15("period.contemporary")],
@@ -18483,7 +18520,7 @@ var STYLE_TERMS = [
18483
18520
  definition: "Pre-modern decorative conventions carried forward without irony: mouldings, pattern, symmetry, furniture with a period lineage.",
18484
18521
  external: [aat12("300310540", "traditional (style)", "exact")],
18485
18522
  label: "Traditional",
18486
- provenance: { basis: "evidenced", snapshot: SNAPSHOT9, source: ESTATE3 },
18523
+ provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: ESTATE3 },
18487
18524
  searchedWithout: [
18488
18525
  {
18489
18526
  date: SEARCHED_ON,
@@ -18521,7 +18558,7 @@ var STYLE_TERMS = [
18521
18558
  label: "Neoclassical",
18522
18559
  provenance: {
18523
18560
  basis: "vendored",
18524
- snapshot: SNAPSHOT9,
18561
+ snapshot: SNAPSHOT8,
18525
18562
  source: PLATFORM_STYLES_SOURCE
18526
18563
  },
18527
18564
  seenAs: ["Classical & Grand"],
@@ -18542,7 +18579,7 @@ var STYLE_TERMS = [
18542
18579
  label: "Gothic",
18543
18580
  provenance: {
18544
18581
  basis: "vendored",
18545
- snapshot: SNAPSHOT9,
18582
+ snapshot: SNAPSHOT8,
18546
18583
  source: PLATFORM_STYLES_SOURCE
18547
18584
  },
18548
18585
  related: [evokes("period.medieval"), evokes("typology.church")],
@@ -18563,7 +18600,7 @@ var STYLE_TERMS = [
18563
18600
  label: "Art Deco",
18564
18601
  provenance: {
18565
18602
  basis: "evidenced",
18566
- snapshot: SNAPSHOT9,
18603
+ snapshot: SNAPSHOT8,
18567
18604
  source: "an architecture-projects platform (src-01), an editorial image library (src-02), a furnishings retailer (src-03) and a rendering pipeline (src-08)"
18568
18605
  },
18569
18606
  related: [{ predicate: "evokes", target: "period.interwar" }],
@@ -18585,7 +18622,7 @@ var STYLE_TERMS = [
18585
18622
  label: "Industrial",
18586
18623
  provenance: {
18587
18624
  basis: "evidenced",
18588
- snapshot: SNAPSHOT9,
18625
+ snapshot: SNAPSHOT8,
18589
18626
  source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
18590
18627
  },
18591
18628
  related: [{ predicate: "evokes", target: "typology.warehouse" }],
@@ -18607,7 +18644,7 @@ var STYLE_TERMS = [
18607
18644
  label: "Brutalism",
18608
18645
  provenance: {
18609
18646
  basis: "vendored",
18610
- snapshot: SNAPSHOT9,
18647
+ snapshot: SNAPSHOT8,
18611
18648
  source: PLATFORM_STYLES_SOURCE
18612
18649
  },
18613
18650
  related: [influencedBy("style.modernism"), evokes("period.mid-century")],
@@ -18627,7 +18664,7 @@ var STYLE_TERMS = [
18627
18664
  label: "Maximalism",
18628
18665
  provenance: {
18629
18666
  basis: "evidenced",
18630
- snapshot: SNAPSHOT9,
18667
+ snapshot: SNAPSHOT8,
18631
18668
  source: "an editorial image library (src-02)"
18632
18669
  },
18633
18670
  searchedWithout: [
@@ -18656,7 +18693,7 @@ var STYLE_TERMS = [
18656
18693
  label: "Eclectic",
18657
18694
  provenance: {
18658
18695
  basis: "evidenced",
18659
- snapshot: SNAPSHOT9,
18696
+ snapshot: SNAPSHOT8,
18660
18697
  source: SCHEME_CORPUS2
18661
18698
  },
18662
18699
  related: [relatedTo15("style.maximalism")],
@@ -18676,7 +18713,7 @@ var STYLE_TERMS = [
18676
18713
  note: 'Defined only relative to two other terms, which is unusual and was nearly grounds to refuse it. It stays because it is heavily used in the US consumer market and because the relative definition is the honest one - the term genuinely means "between those two" and pretending otherwise would invent content nobody intends.',
18677
18714
  provenance: {
18678
18715
  basis: "evidenced",
18679
- snapshot: SNAPSHOT9,
18716
+ snapshot: SNAPSHOT8,
18680
18717
  source: SCHEME_CORPUS2
18681
18718
  },
18682
18719
  related: [
@@ -18713,7 +18750,7 @@ var STYLE_TERMS = [
18713
18750
  label: "Rustic",
18714
18751
  provenance: {
18715
18752
  basis: "evidenced",
18716
- snapshot: SNAPSHOT9,
18753
+ snapshot: SNAPSHOT8,
18717
18754
  source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
18718
18755
  },
18719
18756
  seenAs: ["Rustic & Artisan"],
@@ -18735,7 +18772,7 @@ var STYLE_TERMS = [
18735
18772
  label: "Vernacular",
18736
18773
  provenance: {
18737
18774
  basis: "vendored",
18738
- snapshot: SNAPSHOT9,
18775
+ snapshot: SNAPSHOT8,
18739
18776
  source: PLATFORM_STYLES_SOURCE
18740
18777
  },
18741
18778
  slug: "vernacular",
@@ -18757,7 +18794,7 @@ var STYLE_TERMS = [
18757
18794
  label: "Critical Regionalism",
18758
18795
  provenance: {
18759
18796
  basis: "vendored",
18760
- snapshot: SNAPSHOT9,
18797
+ snapshot: SNAPSHOT8,
18761
18798
  source: PLATFORM_STYLES_SOURCE
18762
18799
  },
18763
18800
  related: [relatedTo15("style.vernacular")],
@@ -18779,7 +18816,7 @@ var STYLE_TERMS = [
18779
18816
  label: "Wabi-Sabi",
18780
18817
  provenance: {
18781
18818
  basis: "evidenced",
18782
- snapshot: SNAPSHOT9,
18819
+ snapshot: SNAPSHOT8,
18783
18820
  source: "an editorial image library (src-02)"
18784
18821
  },
18785
18822
  related: [
@@ -18861,7 +18898,7 @@ var searchedWithout = (query) => [
18861
18898
  }
18862
18899
  ];
18863
18900
  var ESTATE_POSITIONING = "brand-positioning vocabulary in a materials-retrieval system (src-05) and project budget bands in a project-materials database (src-07)";
18864
- var SNAPSHOT10 = "2026-08-22";
18901
+ var SNAPSHOT9 = "2026-08-22";
18865
18902
  var ADR3 = "@instruments/taxonomy ADR 0001, amended 22 August 2026";
18866
18903
  var TIER_MARKET_TERMS = [
18867
18904
  {
@@ -18870,7 +18907,7 @@ var TIER_MARKET_TERMS = [
18870
18907
  label: "Value",
18871
18908
  provenance: {
18872
18909
  basis: "evidenced",
18873
- snapshot: SNAPSHOT10,
18910
+ snapshot: SNAPSHOT9,
18874
18911
  source: ESTATE_POSITIONING
18875
18912
  },
18876
18913
  rank: 1,
@@ -18884,7 +18921,7 @@ var TIER_MARKET_TERMS = [
18884
18921
  label: "Mid-market",
18885
18922
  provenance: {
18886
18923
  basis: "evidenced",
18887
- snapshot: SNAPSHOT10,
18924
+ snapshot: SNAPSHOT9,
18888
18925
  source: ESTATE_POSITIONING
18889
18926
  },
18890
18927
  rank: 2,
@@ -18899,7 +18936,7 @@ var TIER_MARKET_TERMS = [
18899
18936
  note: "`upscale` is NOT recorded here as another name for this term, though the trade uses it that way, because `tier.chain-scale.upscale` is a different rung on a longer ladder. Letting the word resolve to both is how the two scales would quietly become one.",
18900
18937
  provenance: {
18901
18938
  basis: "evidenced",
18902
- snapshot: SNAPSHOT10,
18939
+ snapshot: SNAPSHOT9,
18903
18940
  source: ESTATE_POSITIONING
18904
18941
  },
18905
18942
  rank: 3,
@@ -18913,7 +18950,7 @@ var TIER_MARKET_TERMS = [
18913
18950
  note: "NOT `mood.luxurious`, and the distinction is the reason this axis exists. Mood says a space reads as expensive; tier says a thing sits at the top of its market. An Aman is this term and `mood.austere`; a gaudy budget hotel lobby is `mood.luxurious` and `tier.market.value`.",
18914
18951
  provenance: {
18915
18952
  basis: "evidenced",
18916
- snapshot: SNAPSHOT10,
18953
+ snapshot: SNAPSHOT9,
18917
18954
  source: ESTATE_POSITIONING
18918
18955
  },
18919
18956
  rank: 4,
@@ -18992,7 +19029,7 @@ var TIER_PRICE_BAND_TERMS = [
18992
19029
  label: symbols,
18993
19030
  provenance: {
18994
19031
  basis: "vendored",
18995
- snapshot: SNAPSHOT10,
19032
+ snapshot: SNAPSHOT9,
18996
19033
  source: "PRICE_TIERS in a materials-retrieval system (src-05)"
18997
19034
  },
18998
19035
  rank: index + 1,
@@ -21070,16 +21107,8 @@ var AXES = [
21070
21107
  status: "authored"
21071
21108
  },
21072
21109
  {
21073
- boundary: "Three facets rather than one flat list, because a flat list cannot say warm green or faded blue. Temperature in particular is the most-welded-in property in the estate: warm minimalism had to be minted twice because no vocabulary could compose it.",
21074
- facets: [
21075
- { label: "Hue", slug: "hue", terms: PALETTE_HUE_TERMS },
21076
- {
21077
- label: "Temperature",
21078
- slug: "temperature",
21079
- terms: PALETTE_TEMPERATURE_TERMS
21080
- },
21081
- { label: "Character", slug: "character", terms: PALETTE_CHARACTER_TERMS }
21082
- ],
21110
+ boundary: "ColorScope owns colour; Taxonomy shows it and authors none. Palette lists ColorScope's families, temperature levels, basic tones and palette compositions under ColorScope's own URIs, so any term can relate to a colour. Named colours and paint colours are not terms here: they stay with ColorScope, reached through the phrase lexicon. Four facets rather than one flat list, because a flat list cannot say warm green or muted blue.",
21111
+ facets: PALETTE_AXIS_FACETS,
21083
21112
  label: "Palette",
21084
21113
  question: "What color is it?",
21085
21114
  slug: "palette",
@@ -21216,7 +21245,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
21216
21245
  // src/v1.ts
21217
21246
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
21218
21247
  var TAXONOMY_SNAPSHOT = "2026-10-02";
21219
- var TAXONOMY_VERSION = "2.6.0";
21248
+ var TAXONOMY_VERSION = "2.7.0";
21220
21249
  var PUBLISHED_V1_BASELINE = "2026-08-30";
21221
21250
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
21222
21251
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -21230,6 +21259,8 @@ var compareText = (left, right) => {
21230
21259
  }
21231
21260
  return 0;
21232
21261
  };
21262
+ var COLORSCOPE_BASE_URI = "https://colorscope.materialinstruments.com";
21263
+ var COLORSCOPE_CONCEPT_PREFIX = `${COLORSCOPE_BASE_URI}/id/`;
21233
21264
  var CANONICAL_SEGMENT = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
21234
21265
  var canonicalSegment = (segment) => {
21235
21266
  if (!CANONICAL_SEGMENT.test(segment)) {
@@ -21245,15 +21276,30 @@ var DEFAULT_PROVENANCE = {
21245
21276
  basis: "authored",
21246
21277
  source: "@instruments/taxonomy published corpus"
21247
21278
  };
21248
- var lifecycleFor = (term12) => {
21249
- const successor = term12?.supersededByReference === void 0 ? void 0 : resolveReference(term12.supersededByReference);
21279
+ var isTaxonomyConceptUri = (uri) => uri.startsWith(`${TAXONOMY_BASE_URI}/id/`);
21280
+ var isColorScopeConceptUri = (uri) => uri.startsWith(COLORSCOPE_CONCEPT_PREFIX);
21281
+ var isFullUri = (reference) => reference.startsWith("https://");
21282
+ var successorUri = (reference) => {
21283
+ if (reference === void 0) {
21284
+ return void 0;
21285
+ }
21286
+ if (isFullUri(reference)) {
21287
+ if (isTaxonomyConceptUri(reference) || isColorScopeConceptUri(reference)) {
21288
+ return reference;
21289
+ }
21290
+ throw new Error(`Unrecognised successor URI: "${reference}".`);
21291
+ }
21292
+ const successor = resolveReference(reference);
21250
21293
  const successorAxis = successor === void 0 ? void 0 : AXES.find((axis) => axis.slug === successor.axisSlug);
21251
- const supersededBy = successor === void 0 || successorAxis === void 0 ? void 0 : conceptUri(
21294
+ return successor === void 0 || successorAxis === void 0 ? void 0 : conceptUri(
21252
21295
  successor.axisSlug,
21253
21296
  successor.facetSlug,
21254
21297
  successor.termSlug,
21255
21298
  successorAxis.facets.length > 1 || successorAxis.facets[0]?.slug !== successorAxis.slug
21256
21299
  );
21300
+ };
21301
+ var lifecycleFor = (term12) => {
21302
+ const supersededBy = successorUri(term12?.supersededByReference);
21257
21303
  return {
21258
21304
  introducedAt: term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
21259
21305
  reviewedAt: term12?.reviewedAt ?? term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
@@ -21273,7 +21319,12 @@ var inversePredicate = {
21273
21319
  "suitable-for": "supported-by",
21274
21320
  "typically-in": "typically-contains"
21275
21321
  };
21276
- var isColorScopeTerm = (term12) => term12.canonicalAuthority?.authority === "colorscope";
21322
+ var colorScopeConceptUri = (uri) => {
21323
+ if (!isColorScopeConceptUri(uri)) {
21324
+ throw new Error(`Not a ColorScope concept URI: "${uri}".`);
21325
+ }
21326
+ return uri;
21327
+ };
21277
21328
  var governanceFor = (explanation, term12) => ({
21278
21329
  explanation,
21279
21330
  lifecycle: lifecycleFor(term12),
@@ -21327,17 +21378,21 @@ var addTermNodes = (assembly, axis, axisUri) => {
21327
21378
  governedEdge(axisUri, "has-facet", facetUri, facet.governance, "inverse")
21328
21379
  );
21329
21380
  for (const [termOrder, term12] of facet.terms.entries()) {
21330
- if (isColorScopeTerm(term12)) {
21331
- continue;
21332
- }
21333
- const uri = conceptUri(axis.slug, facet.slug, term12.slug, faceted);
21381
+ const external = term12.canonicalAuthority;
21382
+ const uri = external === void 0 ? conceptUri(axis.slug, facet.slug, term12.slug, faceted) : colorScopeConceptUri(external.uri);
21334
21383
  const qualified = faceted ? `${axis.slug}.${facet.slug}.${term12.slug}` : `${axis.slug}.${term12.slug}`;
21335
21384
  assembly.conceptByQualifiedSlug.set(qualified, uri);
21336
21385
  assembly.conceptByAxisAndTerm.set(`${axis.slug}.${term12.slug}`, uri);
21337
- const governance = governanceFor(
21386
+ const governance = external === void 0 ? governanceFor(
21338
21387
  `Taxonomy governs the canonical identity and meaning of ${term12.label}.`,
21339
21388
  term12
21340
- );
21389
+ ) : {
21390
+ ...governanceFor(
21391
+ `ColorScope governs the identity and meaning of ${term12.label}. Taxonomy lists it so that any term can relate to it, and defines nothing about it.`,
21392
+ term12
21393
+ ),
21394
+ steward: "@materialinstruments/colorscope"
21395
+ };
21341
21396
  assembly.nodes.push({
21342
21397
  ...term12.altLabels === void 0 ? {} : { altLabels: term12.altLabels },
21343
21398
  axis: axisUri,
@@ -21345,7 +21400,8 @@ var addTermNodes = (assembly, axis, axisUri) => {
21345
21400
  ...term12.external === void 0 ? {} : { externalReferences: externalReferences(term12.external) },
21346
21401
  facet: facetUri,
21347
21402
  governance,
21348
- governedBy: "taxonomy",
21403
+ governedBy: external === void 0 ? "taxonomy" : "colorscope",
21404
+ ...term12.hex === void 0 ? {} : { hex: term12.hex },
21349
21405
  kind: "concept",
21350
21406
  label: term12.label,
21351
21407
  lifecycle: governance.lifecycle,
@@ -21473,13 +21529,25 @@ var KNOWLEDGE_GRAPH = buildKnowledgeGraph();
21473
21529
  var COLOR_FAMILY_REFERENCE_KIND = "color-family";
21474
21530
  var NAMED_COLOR_REFERENCE_KIND = "named-color";
21475
21531
  var COLOR_SCOPE_REFERENCE_KINDS = [
21532
+ "basic-tone",
21476
21533
  "chroma-level",
21477
21534
  COLOR_FAMILY_REFERENCE_KIND,
21478
21535
  "lightness-level",
21536
+ "modifier",
21479
21537
  NAMED_COLOR_REFERENCE_KIND,
21480
21538
  "palette-mood",
21481
21539
  "temperature-level"
21482
21540
  ];
21541
+ var COLORSCOPE_URI_KIND = {
21542
+ "basic-tone": "basic-tone",
21543
+ "chroma-level": "chroma",
21544
+ "color-family": "family",
21545
+ "lightness-level": "lightness",
21546
+ modifier: "modifier",
21547
+ "named-color": "color",
21548
+ "palette-mood": "palette",
21549
+ "temperature-level": "temperature"
21550
+ };
21483
21551
  var lexicalGovernance = (explanation, provenance, lifecycle = lifecycleFor()) => ({
21484
21552
  explanation,
21485
21553
  lifecycle,
@@ -21488,9 +21556,10 @@ var lexicalGovernance = (explanation, provenance, lifecycle = lifecycleFor()) =>
21488
21556
  });
21489
21557
  var colorScope = (identifier, referenceKind) => ({
21490
21558
  authority: "colorscope",
21491
- authorityUri: "https://colorscope.materialinstruments.com",
21559
+ authorityUri: COLORSCOPE_BASE_URI,
21492
21560
  identifier,
21493
- referenceKind
21561
+ referenceKind,
21562
+ uri: `${COLORSCOPE_CONCEPT_PREFIX}${COLORSCOPE_URI_KIND[referenceKind]}/${identifier}`
21494
21563
  });
21495
21564
  var WALNUT_MATERIAL = {
21496
21565
  authority: "taxonomy",
@@ -21555,7 +21624,7 @@ var TERRA_COTTA_LIFECYCLE = {
21555
21624
  reviewedAt: TERRA_COTTA_DATE,
21556
21625
  status: "active"
21557
21626
  };
21558
- var COLORSCOPE_INSTALLED = "@instruments/colorscope 9.4.0 data/reference/v1/taxonomy.json";
21627
+ var COLORSCOPE_INSTALLED = `@materialinstruments/colorscope ${COLORSCOPE_VERSION} data/reference/v1/taxonomy.json`;
21559
21628
  var reviewedTaxonomy = (path) => ({
21560
21629
  authority: "taxonomy",
21561
21630
  uri: `${TAXONOMY_BASE_URI}/id/${path}`
@@ -21661,7 +21730,96 @@ var crossoverTaxonomyAmbiguity = (phrase, meanings, explanation, source, snapsho
21661
21730
  };
21662
21731
  };
21663
21732
  var MG2620_LEXICAL_REVIEW_DATE = "2026-10-10";
21733
+ var COLOUR_REPOINT_LIFECYCLE = {
21734
+ introducedAt: PUBLISHED_V1_BASELINE,
21735
+ reviewedAt: COLOUR_LAYER_DATE,
21736
+ status: "active"
21737
+ };
21738
+ var colourWordProvenance = (identifier) => ({
21739
+ basis: "referenced",
21740
+ snapshot: COLOUR_LAYER_DATE,
21741
+ source: `${COLORSCOPE_INSTALLED} concept ${identifier}`
21742
+ });
21743
+ var capitalised = (phrase) => `${phrase.slice(0, 1).toUpperCase()}${phrase.slice(1)}`;
21744
+ var NAMED_COLOUR_WORDS = [
21745
+ "aqua",
21746
+ "blush",
21747
+ "carmine",
21748
+ "coal",
21749
+ "crimson",
21750
+ "greige",
21751
+ "ivory",
21752
+ "mauve",
21753
+ "mushroom",
21754
+ "mustard",
21755
+ "navy",
21756
+ "ochre",
21757
+ "off-white",
21758
+ "olive",
21759
+ "putty",
21760
+ "rose",
21761
+ "russet",
21762
+ "rust",
21763
+ "sage",
21764
+ "scarlet",
21765
+ "turquoise",
21766
+ "violet"
21767
+ ];
21768
+ var namedColourEntry = (phrase) => ({
21769
+ explanation: `${capitalised(phrase)} is a ColorScope named colour. Taxonomy hands the word to ColorScope, which owns the colour and the family it sits in.`,
21770
+ governance: lexicalGovernance(
21771
+ "ColorScope governs named colours and the family each belongs to; Taxonomy mints no node for one.",
21772
+ colourWordProvenance(phrase),
21773
+ COLOUR_REPOINT_LIFECYCLE
21774
+ ),
21775
+ outcome: "equivalent",
21776
+ phrase,
21777
+ target: colorScope(phrase, NAMED_COLOR_REFERENCE_KIND)
21778
+ });
21779
+ var INDIGO_ENTRY = {
21780
+ explanation: "Indigo names two ColorScope colours, Indigo Blue in the blue family and Indigo Violet in the purple family; the bare word does not settle which.",
21781
+ governance: lexicalGovernance(
21782
+ AMBIGUITY_GOVERNANCE,
21783
+ colourWordProvenance("indigo-blue and indigo-violet"),
21784
+ COLOUR_REPOINT_LIFECYCLE
21785
+ ),
21786
+ meanings: [
21787
+ colorScope("indigo-blue", NAMED_COLOR_REFERENCE_KIND),
21788
+ colorScope("indigo-violet", NAMED_COLOR_REFERENCE_KIND)
21789
+ ],
21790
+ outcome: "ambiguous",
21791
+ phrase: "indigo"
21792
+ };
21793
+ var washedEntry = (phrase) => ({
21794
+ explanation: `${capitalised(phrase)} is a wording of ColorScope's washed modifier: colour that has lost strength through age, light or wear. Taxonomy's former Faded term is deprecated in its favour.`,
21795
+ governance: lexicalGovernance(
21796
+ "ColorScope governs the washed modifier; the deprecated Taxonomy term it replaces keeps its published URI.",
21797
+ colourWordProvenance("washed"),
21798
+ COLOUR_REPOINT_LIFECYCLE
21799
+ ),
21800
+ outcome: "equivalent",
21801
+ phrase,
21802
+ target: colorScope("washed", "modifier")
21803
+ });
21804
+ var SATURATED_ENTRY = {
21805
+ explanation: "Saturated is a ColorScope chroma level. Taxonomy hands the word to ColorScope, which owns it.",
21806
+ governance: lexicalGovernance(
21807
+ "ColorScope governs its chroma levels; Taxonomy lists no node for one.",
21808
+ colourWordProvenance("saturated"),
21809
+ COLOUR_REPOINT_LIFECYCLE
21810
+ ),
21811
+ outcome: "equivalent",
21812
+ phrase: "saturated",
21813
+ target: colorScope("saturated", "chroma-level")
21814
+ };
21815
+ var COLOUR_PHRASE_ENTRIES = [
21816
+ ...NAMED_COLOUR_WORDS.map(namedColourEntry),
21817
+ INDIGO_ENTRY,
21818
+ ...["faded", "sun-bleached", "washed"].map(washedEntry),
21819
+ SATURATED_ENTRY
21820
+ ];
21664
21821
  var AUTHORED_PHRASE_ENTRIES = [
21822
+ ...COLOUR_PHRASE_ENTRIES,
21665
21823
  {
21666
21824
  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.",
21667
21825
  governance: lexicalGovernance(
@@ -21731,20 +21889,6 @@ var AUTHORED_PHRASE_ENTRIES = [
21731
21889
  status: "active"
21732
21890
  }
21733
21891
  ),
21734
- {
21735
- explanation: "Blue is a ColorScope color-family meaning; Taxonomy references that authority rather than minting a rival color identity.",
21736
- governance: lexicalGovernance(
21737
- "The ColorScope family is the single governed meaning of the unqualified color word.",
21738
- {
21739
- basis: "vendored",
21740
- snapshot: PUBLISHED_V1_BASELINE,
21741
- source: "@instruments/colorscope COLOR_FAMILIES"
21742
- }
21743
- ),
21744
- outcome: "equivalent",
21745
- phrase: "blue",
21746
- target: colorScope("blue", COLOR_FAMILY_REFERENCE_KIND)
21747
- },
21748
21892
  crossoverAmbiguity(
21749
21893
  "alabaster",
21750
21894
  `${TAXONOMY_BASE_URI}/id/material/alabaster`,
@@ -22607,10 +22751,43 @@ var lexicalPhrases = (term12) => [term12.slug, term12.label, ...term12.altLabels
22607
22751
  (phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
22608
22752
  );
22609
22753
  var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
22610
- var inferredLifecycle = (meanings) => {
22754
+ var PHRASES_RESOLVED_BEFORE_COLOUR_NODES = /* @__PURE__ */ new Set([
22755
+ "beige",
22756
+ "black",
22757
+ "blue",
22758
+ "brown",
22759
+ "colorful",
22760
+ "cool",
22761
+ "cream",
22762
+ "dark",
22763
+ "gray",
22764
+ "green",
22765
+ "grey",
22766
+ "light",
22767
+ "mid",
22768
+ "medium",
22769
+ "monochrome",
22770
+ "muted",
22771
+ "neutral",
22772
+ "orange",
22773
+ "pink",
22774
+ "polychrome",
22775
+ "purple",
22776
+ "red",
22777
+ "taupe",
22778
+ "teal",
22779
+ "vibrant",
22780
+ "warm",
22781
+ "white",
22782
+ "yellow"
22783
+ ]);
22784
+ var inferredLifecycle = (meanings, phrase) => {
22611
22785
  const terms = meanings.flatMap((meaning) => meaning.terms);
22612
22786
  const lifecycles = terms.map((term12) => lifecycleFor(term12));
22613
- const [introducedAt] = terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
22787
+ const [introducedAt] = [
22788
+ ...terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE),
22789
+ ...PHRASES_RESOLVED_BEFORE_COLOUR_NODES.has(phrase) ? [PUBLISHED_V1_BASELINE] : []
22790
+ ].toSorted(compareText);
22614
22791
  const reviewedAt = terms.map(
22615
22792
  (term12) => term12.reviewedAt ?? term12.introducedAt ?? PUBLISHED_V1_BASELINE
22616
22793
  ).toSorted(compareText).at(-1);
@@ -22659,7 +22836,7 @@ var inferredLexicalEntries = () => {
22659
22836
  if (first === void 0) {
22660
22837
  throw new Error(`Lexical phrase "${phrase}" has no meaning.`);
22661
22838
  }
22662
- const lifecycle = inferredLifecycle(meanings);
22839
+ const lifecycle = inferredLifecycle(meanings, phrase);
22663
22840
  if (second === void 0) {
22664
22841
  return {
22665
22842
  explanation: `The published spelling \u201C${phrase}\u201D has one governed meaning.`,
@@ -22867,6 +23044,7 @@ var ASSESSMENT_POLICY_REVISION = `sha256:${createHash2("sha256").update(
22867
23044
  export {
22868
23045
  ASSESSMENT_AUTHORITY_REFERENCES,
22869
23046
  ASSESSMENT_POLICY_REVISION,
23047
+ COLORSCOPE_BASE_URI,
22870
23048
  COLOR_SCOPE_REFERENCE_KINDS,
22871
23049
  CONCEPT_ASSESSMENT_POLICIES,
22872
23050
  KNOWLEDGE_GRAPH,