@instruments/taxonomy 1.8.0 → 1.9.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.
@@ -0,0 +1,8 @@
1
+ import type { Term } from "../term.js";
2
+ /**
3
+ * The natural variation of a stone, stone-effect or timber surface, independent of motif. See
4
+ * ADR 0008. Unranked, for the reason type is: veined is not more figured than speckled, only
5
+ * differently so. Evidenced from the Material Bank PIM's surface-figure column (non-Samplize
6
+ * SKUs, 2026-09-26); the PIM's own spelling is preserved in `seenAs`.
7
+ */
8
+ export declare const PATTERN_FIGURE_TERMS: readonly Term[];
@@ -0,0 +1,10 @@
1
+ import type { Term } from "../term.js";
2
+ export declare const TAX57_DATE = "2026-09-26";
3
+ export declare const TAX57_SOURCE = "Linear TAX-57 visual-vocabulary review";
4
+ export declare const PIM_MOTIF_SOURCE = "the pattern-motif column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
5
+ export declare const PIM_FIGURE_SOURCE = "the surface-figure column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
6
+ /** Evidenced from the Material Bank PIM at the TAX-57 snapshot. */
7
+ export declare const pimTerm: (slug: string, label: string, definition: string, source: string, extra?: Partial<Term>) => Term;
8
+ /** Written for TAX-57 with no public authority or catalogue column behind it. */
9
+ export declare const authoredTax57: (slug: string, label: string, definition: string, extra?: Partial<Term>) => Term;
10
+ export declare const wikidata: (id: string, label: string) => string;
@@ -1,4 +1,5 @@
1
1
  import type { Term } from "../term.js";
2
+ export { PATTERN_FIGURE_TERMS } from "./pattern-figure.js";
2
3
  /** The motif itself. Unordered: a damask is not more than a stripe. */
3
4
  export declare const PATTERN_TYPE_TERMS: readonly Term[];
4
5
  /** How big the repeat is. Ordered, micro to oversized. */
@@ -9,12 +10,5 @@ export declare const PATTERN_DENSITY_TERMS: readonly Term[];
9
10
  export declare const PATTERN_REGULARITY_TERMS: readonly Term[];
10
11
  /** Which way the pattern runs. Unordered: see the header on why this is not a ladder. */
11
12
  export declare const PATTERN_DIRECTIONALITY_TERMS: readonly Term[];
12
- /**
13
- * The natural variation of a stone, stone-effect or timber surface, independent of motif. See
14
- * ADR 0008. Unranked, for the reason type is: veined is not more figured than speckled, only
15
- * differently so. Evidenced from the Material Bank PIM's surface-figure column (non-Samplize
16
- * SKUs, 2026-09-26); the PIM's own spelling is preserved in `seenAs`.
17
- */
18
- export declare const PATTERN_FIGURE_TERMS: readonly Term[];
19
13
  /** Kept for consumers importing the axis as one list; prefer the facets. */
20
14
  export declare const PATTERN_TERMS: readonly Term[];
package/dist/index.js CHANGED
@@ -1921,6 +1921,8 @@ var FORMAT_TERMS = [
1921
1921
  var REVIEW_DATE5 = "2026-08-31";
1922
1922
  var REVIEW_SOURCE4 = "@instruments/taxonomy TAX-45 reviewed implementation contract";
1923
1923
  var ZIGZAG_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
1924
+ var MG_LAYOUT_DATE = "2026-09-27";
1925
+ var MG_LAYOUT_SOURCE = "MG-2218 reconciliation: MaterialGraph plank_layout extensions evidenced against Material Bank's catalogue feed";
1924
1926
  var term5 = (slug, label, definition, extra = {}) => ({
1925
1927
  definition,
1926
1928
  introducedAt: REVIEW_DATE5,
@@ -1930,6 +1932,19 @@ var term5 = (slug, label, definition, extra = {}) => ({
1930
1932
  slug,
1931
1933
  ...extra
1932
1934
  });
1935
+ var mgLayoutTerm = (slug, label, definition, extra = {}) => ({
1936
+ definition,
1937
+ introducedAt: MG_LAYOUT_DATE,
1938
+ label,
1939
+ provenance: {
1940
+ basis: "evidenced",
1941
+ snapshot: MG_LAYOUT_DATE,
1942
+ source: MG_LAYOUT_SOURCE
1943
+ },
1944
+ reviewedAt: MG_LAYOUT_DATE,
1945
+ slug,
1946
+ ...extra
1947
+ });
1933
1948
  var INSTALLATION_LAYOUT_TERMS = [
1934
1949
  term5(
1935
1950
  "stack-bond",
@@ -2010,6 +2025,33 @@ var INSTALLATION_LAYOUT_TERMS = [
2010
2025
  "irregular-field",
2011
2026
  "Irregular field",
2012
2027
  "Discrete units form a positively observed non-periodic field with persistent real joints."
2028
+ ),
2029
+ // MG-2218. Named French parquet panel layouts, each an assembled panel of real joints rather than
2030
+ // a printed or woven motif.
2031
+ mgLayoutTerm(
2032
+ "versailles",
2033
+ "Versailles parquet",
2034
+ "Framed square panels, each filled with an interlocking diagonal basketweave lattice, repeat across the surface."
2035
+ ),
2036
+ mgLayoutTerm(
2037
+ "chantilly",
2038
+ "Chantilly parquet",
2039
+ "Framed square panels, each filled with an interlaced lattice of diamond or cross-shaped units, repeat across the surface."
2040
+ ),
2041
+ // MG-2218. Narrower than herringbone: every double herringbone installation is also a broken
2042
+ // zigzag of alternating angled units, just doubled in width and cut from narrower stock.
2043
+ mgLayoutTerm(
2044
+ "double-herringbone",
2045
+ "Double herringbone",
2046
+ "Two herringbone courses laid together so each zigzag arm reads at double width, using narrower units than a single herringbone layout at the same scale.",
2047
+ { broaderSlug: "herringbone" }
2048
+ ),
2049
+ // MG-2218. `hexagon-block` rather than `hexagon`, which unit-shape already holds for the outline
2050
+ // of one six-sided unit; this is the layout six elongated units make together, not that outline.
2051
+ mgLayoutTerm(
2052
+ "hexagon-block",
2053
+ "Hexagonal parquet block",
2054
+ "Elongated units arranged radially in groups of six form repeating hexagonal parquet blocks across the surface."
2013
2055
  )
2014
2056
  ];
2015
2057
 
@@ -4526,6 +4568,8 @@ var MATERIAL_POLYMERS_TERMS = [
4526
4568
  var WOOD_HANDBOOK3 = "USDA Wood Handbook (2021), chapter 2";
4527
4569
  var EN_13556 = "EN 13556:2003";
4528
4570
  var WOOD_HANDBOOK_IMPORTED = "USDA Wood Handbook (2021), chapter 2, imported woods section";
4571
+ var TAX59_DATE = "2026-09-27";
4572
+ var TAX59_SOURCE = "Linear TAX-59 wood species review; MG-2218 reconciliation against Material Bank's wood_species column";
4529
4573
  var MATERIAL_TIMBER_SPECIES_TERMS = [
4530
4574
  compositionTerm(
4531
4575
  "prunus-serotina",
@@ -4623,6 +4667,23 @@ var MATERIAL_TIMBER_SPECIES_TERMS = [
4623
4667
  WOOD_HANDBOOK_IMPORTED,
4624
4668
  { altLabels: ["Eucalyptus marginata"], broaderSlug: "eucalyptus" }
4625
4669
  ),
4670
+ compositionTerm(
4671
+ "acacia-koa",
4672
+ "Koa",
4673
+ "Timber from Acacia koa, commercially cut in Hawaii.",
4674
+ WOOD_HANDBOOK3,
4675
+ {
4676
+ altLabels: ["Acacia Koa"],
4677
+ broaderSlug: "acacia",
4678
+ introducedAt: TAX59_DATE,
4679
+ provenance: {
4680
+ basis: "referenced",
4681
+ snapshot: TAX59_DATE,
4682
+ source: `${WOOD_HANDBOOK3}; ${TAX59_SOURCE}`
4683
+ },
4684
+ reviewedAt: TAX59_DATE
4685
+ }
4686
+ ),
4626
4687
  compositionTerm(
4627
4688
  "quercus-mongolica",
4628
4689
  "Mongolian oak",
@@ -4672,6 +4733,18 @@ var MATERIAL_TIMBER_SPECIES_TERMS = [
4672
4733
  EN_13556,
4673
4734
  { altLabels: ["Quercus petraea"], broaderSlug: "oak" }
4674
4735
  ),
4736
+ authoredTerm(
4737
+ "fraxinus-mandshurica",
4738
+ "Tamo",
4739
+ "Timber from Fraxinus mandshurica, commercially cut across north-east Asia and prized for its figured grain.",
4740
+ {
4741
+ altLabels: ["Japanese Ash"],
4742
+ broaderSlug: "ash",
4743
+ introducedAt: TAX59_DATE,
4744
+ provenance: { basis: "authored", source: TAX59_SOURCE },
4745
+ reviewedAt: TAX59_DATE
4746
+ }
4747
+ ),
4675
4748
  compositionTerm(
4676
4749
  "thuja-plicata",
4677
4750
  "Western red cedar",
@@ -4705,6 +4778,22 @@ var MATERIAL_TIMBER_SPECIES_TERMS = [
4705
4778
  var WOOD_HANDBOOK4 = "USDA Wood Handbook (2021), chapter 2";
4706
4779
  var EN_135562 = "EN 13556:2003";
4707
4780
  var HARDWOOD_SLUG = "hardwood";
4781
+ var TAX59_DATE2 = "2026-09-27";
4782
+ var TAX59_SOURCE2 = "Linear TAX-59 wood species review; MG-2218 reconciliation against Material Bank's wood_species column";
4783
+ var mgWoodTerm = (slug, label, definition, extra = {}) => ({
4784
+ broaderSlug: HARDWOOD_SLUG,
4785
+ definition,
4786
+ introducedAt: TAX59_DATE2,
4787
+ label,
4788
+ provenance: {
4789
+ basis: "evidenced",
4790
+ snapshot: TAX59_DATE2,
4791
+ source: TAX59_SOURCE2
4792
+ },
4793
+ reviewedAt: TAX59_DATE2,
4794
+ slug,
4795
+ ...extra
4796
+ });
4708
4797
  var MATERIAL_TIMBERS_TERMS = [
4709
4798
  // Materials, alphabetical.
4710
4799
  authoredTerm(
@@ -4720,6 +4809,11 @@ var MATERIAL_TIMBERS_TERMS = [
4720
4809
  WOOD_HANDBOOK4,
4721
4810
  { broaderSlug: HARDWOOD_SLUG }
4722
4811
  ),
4812
+ mgWoodTerm(
4813
+ "anigre",
4814
+ "Anigre",
4815
+ "Hardwood timber from trees in the genus Aningeria (a synonym of Pouteria), commercially cut across West and Central Africa."
4816
+ ),
4723
4817
  compositionTerm(
4724
4818
  "ash",
4725
4819
  "Ash",
@@ -4734,6 +4828,11 @@ var MATERIAL_TIMBERS_TERMS = [
4734
4828
  WOOD_HANDBOOK4,
4735
4829
  { broaderSlug: "poplar" }
4736
4830
  ),
4831
+ mgWoodTerm(
4832
+ "balau",
4833
+ "Balau",
4834
+ "Hardwood timber from a group of dense Shorea species traded together as balau, commercially cut across South-East Asia."
4835
+ ),
4737
4836
  compositionTerm(
4738
4837
  "basswood",
4739
4838
  "Basswood",
@@ -4841,6 +4940,11 @@ var MATERIAL_TIMBERS_TERMS = [
4841
4940
  EN_135562,
4842
4941
  { broaderSlug: HARDWOOD_SLUG }
4843
4942
  ),
4943
+ mgWoodTerm(
4944
+ "sucupira",
4945
+ "Sucupira",
4946
+ "Hardwood timber traded as sucupira from Bowdichia and Diplotropis species, commercially cut across Brazil and the Guianas."
4947
+ ),
4844
4948
  compositionTerm(
4845
4949
  "sycamore",
4846
4950
  "Sycamore",
@@ -4848,6 +4952,12 @@ var MATERIAL_TIMBERS_TERMS = [
4848
4952
  `${EN_135562}; ${WOOD_HANDBOOK4}`,
4849
4953
  { broaderSlug: HARDWOOD_SLUG }
4850
4954
  ),
4955
+ mgWoodTerm(
4956
+ "tigerwood",
4957
+ "Tigerwood",
4958
+ "Hardwood timber from Astronium fraxinifolium and Astronium graveolens, commercially cut across tropical Central and South America.",
4959
+ { altLabels: ["Goncalo alves"] }
4960
+ ),
4851
4961
  // Species, alphabetical.
4852
4962
  compositionTerm(
4853
4963
  "afromosia",
@@ -4856,6 +4966,12 @@ var MATERIAL_TIMBERS_TERMS = [
4856
4966
  EN_135562,
4857
4967
  { altLabels: ["Afromosia"], broaderSlug: HARDWOOD_SLUG }
4858
4968
  ),
4969
+ // EN 13556 carries this species under code DIXX.
4970
+ mgWoodTerm(
4971
+ "angelique",
4972
+ "Angelique",
4973
+ "Hardwood timber from Dicorynia guianensis, commercially cut across French Guiana and Suriname."
4974
+ ),
4859
4975
  compositionTerm(
4860
4976
  "balsa",
4861
4977
  "Balsa",
@@ -4870,6 +4986,11 @@ var MATERIAL_TIMBERS_TERMS = [
4870
4986
  EN_135562,
4871
4987
  { broaderSlug: HARDWOOD_SLUG, seenAs: ["Brazilian teak"] }
4872
4988
  ),
4989
+ mgWoodTerm(
4990
+ "garapa",
4991
+ "Garapa",
4992
+ "Hardwood timber from Apuleia leiocarpa, commercially cut across Brazil."
4993
+ ),
4873
4994
  compositionTerm(
4874
4995
  "iroko",
4875
4996
  "Iroko",
@@ -4882,7 +5003,7 @@ var MATERIAL_TIMBERS_TERMS = [
4882
5003
  "Jatoba",
4883
5004
  "Hardwood timber from Hymenaea courbaril, commercially cut across Central and South America.",
4884
5005
  EN_135562,
4885
- { broaderSlug: HARDWOOD_SLUG, seenAs: ["Brazilian cherry"] }
5006
+ { altLabels: ["Brazilian Cherry"], broaderSlug: HARDWOOD_SLUG }
4886
5007
  ),
4887
5008
  compositionTerm(
4888
5009
  "kempas",
@@ -4898,6 +5019,22 @@ var MATERIAL_TIMBERS_TERMS = [
4898
5019
  EN_135562,
4899
5020
  { altLabels: ["Korina"], broaderSlug: HARDWOOD_SLUG }
4900
5021
  ),
5022
+ mgWoodTerm(
5023
+ "madrone",
5024
+ "Madrone",
5025
+ "Hardwood timber from Arbutus menziesii, commercially cut across the Pacific coast of North America.",
5026
+ { altLabels: ["Madrona"] }
5027
+ ),
5028
+ mgWoodTerm(
5029
+ "makore",
5030
+ "Makore",
5031
+ "Hardwood timber from Tieghemella heckelii, commercially cut across West Africa."
5032
+ ),
5033
+ mgWoodTerm(
5034
+ "pear",
5035
+ "Pear",
5036
+ "Hardwood timber from Pyrus communis, commercially cut across Europe."
5037
+ ),
4901
5038
  compositionTerm(
4902
5039
  "rubberwood",
4903
5040
  "Rubberwood",
@@ -4912,6 +5049,26 @@ var MATERIAL_TIMBERS_TERMS = [
4912
5049
  EN_135562,
4913
5050
  { broaderSlug: HARDWOOD_SLUG }
4914
5051
  ),
5052
+ mgWoodTerm(
5053
+ "sweetgum",
5054
+ "Sweetgum",
5055
+ "Hardwood timber from Liquidambar styraciflua, commercially cut across the south-eastern United States.",
5056
+ { seenAs: ["Gum"] }
5057
+ ),
5058
+ // American tulipwood, not Brazilian tulipwood (Dalbergia decipularis): the CITES-II-restricted
5059
+ // Brazilian species trades in small veneer for inlay and marquetry, never architectural flooring,
5060
+ // while Liriodendron tulipifera is the plantation hardwood AHEC actively markets internationally
5061
+ // as American tulipwood for flooring, veneer and joinery. Material Bank's flooring and veneer
5062
+ // catalogue means the American species. `poplar`'s own `seenAs: ["tulip poplar"]` names this same
5063
+ // species under its domestic US common name; it is not touched here, but is flagged in the
5064
+ // release notes as a likely pre-existing mislabel, since tulip poplar is Liriodendron, not the
5065
+ // Populus genus poplar names.
5066
+ mgWoodTerm(
5067
+ "tulipwood",
5068
+ "American tulipwood",
5069
+ "Hardwood timber from Liriodendron tulipifera, commercially cut across the eastern United States and marketed internationally as American tulipwood.",
5070
+ { altLabels: ["Liriodendron tulipifera"], seenAs: ["Tulipwood"] }
5071
+ ),
4915
5072
  compositionTerm(
4916
5073
  "wenge",
4917
5074
  "Wenge",
@@ -5812,24 +5969,11 @@ var PALETTE_CHARACTER_TERMS = [
5812
5969
  }
5813
5970
  ];
5814
5971
 
5815
- // src/axes/pattern.ts
5816
- var SOURCE4 = "pattern vocabulary in a furnishings retailer (src-03)";
5817
- var SNAPSHOT6 = "2026-08-25";
5818
- var RETRIEVAL_SNAPSHOT2 = "2026-08-27";
5819
- var RETRIEVAL_SCALE = "ms_pattern_scale, a dictionary in a materials-retrieval system (src-05)";
5820
- var RETRIEVAL_DENSITY = "ms_pattern_density, a dictionary in a materials-retrieval system (src-05)";
5821
- var RETRIEVAL_REGULARITY = "ms_pattern_regularity, a dictionary in a materials-retrieval system (src-05)";
5822
- var RETRIEVAL_DIRECTIONALITY = "ms_directionality, a dictionary in a materials-retrieval system (src-05)";
5823
- var GEOMETRY_REVIEW_DATE = "2026-08-31";
5824
- var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
5825
- var REVIEW_DATE7 = "2026-09-11";
5826
- var REVIEW_SOURCE6 = "everyday-interiors vocabulary review";
5827
- var GEOMETRY_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
5972
+ // src/axes/pattern-tax57.ts
5828
5973
  var TAX57_DATE3 = "2026-09-26";
5829
5974
  var TAX57_SOURCE2 = "Linear TAX-57 visual-vocabulary review";
5830
5975
  var PIM_MOTIF_SOURCE = "the pattern-motif column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
5831
5976
  var PIM_FIGURE_SOURCE = "the surface-figure column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
5832
- var ANIMAL_PRINT_SLUG = "animal-print";
5833
5977
  var pimTerm = (slug, label, definition, source, extra = {}) => ({
5834
5978
  definition,
5835
5979
  introducedAt: TAX57_DATE3,
@@ -5849,6 +5993,145 @@ var authoredTax57 = (slug, label, definition, extra = {}) => ({
5849
5993
  ...extra
5850
5994
  });
5851
5995
  var wikidata4 = (id, label) => `Wikidata ${id} ${label}, https://www.wikidata.org/wiki/${id}`;
5996
+
5997
+ // src/axes/pattern-figure.ts
5998
+ var PATTERN_FIGURE_TERMS = [
5999
+ pimTerm(
6000
+ "unvaried",
6001
+ "Unvaried",
6002
+ "No visible natural variation across the surface.",
6003
+ PIM_FIGURE_SOURCE,
6004
+ { seenAs: ["No Variation"] }
6005
+ ),
6006
+ pimTerm(
6007
+ "speckled",
6008
+ "Speckled",
6009
+ "Fine flecks and speckles scattered across the surface.",
6010
+ PIM_FIGURE_SOURCE,
6011
+ { seenAs: ["Flecks & Speckles"] }
6012
+ ),
6013
+ pimTerm(
6014
+ "linear-veining",
6015
+ "Linear veining",
6016
+ "Veining running in one consistent direction across the surface.",
6017
+ PIM_FIGURE_SOURCE,
6018
+ { seenAs: ["Linear Veins"] }
6019
+ ),
6020
+ pimTerm(
6021
+ "multi-directional-veining",
6022
+ "Multi-directional veining",
6023
+ "Veining running in more than one direction across the surface, with no single dominant axis.",
6024
+ PIM_FIGURE_SOURCE,
6025
+ { seenAs: ["Multi-Directional Veins"] }
6026
+ ),
6027
+ pimTerm(
6028
+ "mottled",
6029
+ "Mottled",
6030
+ "Uneven patches or blotches of tone breaking up an otherwise even surface.",
6031
+ PIM_FIGURE_SOURCE
6032
+ ),
6033
+ pimTerm(
6034
+ "cloudy",
6035
+ "Cloudy",
6036
+ "Soft, diffuse variation in tone with no distinct veins or edges, reading as drifting cloud.",
6037
+ PIM_FIGURE_SOURCE
6038
+ ),
6039
+ pimTerm(
6040
+ "breccia",
6041
+ "Breccia",
6042
+ "Angular fragments of stone bound within a contrasting matrix.",
6043
+ `${PIM_FIGURE_SOURCE}; ${wikidata4("Q191250", "breccia")}`,
6044
+ { seenAs: ["Angular Fragments"] }
6045
+ ),
6046
+ pimTerm(
6047
+ "swirling",
6048
+ "Swirling",
6049
+ "Variation that curls and eddies across the surface rather than running in straight lines or veins.",
6050
+ PIM_FIGURE_SOURCE
6051
+ ),
6052
+ pimTerm(
6053
+ "fossiliferous",
6054
+ "Fossil",
6055
+ "Visible shells or fossil forms embedded in the surface.",
6056
+ PIM_FIGURE_SOURCE,
6057
+ { seenAs: ["Shells & Fossils"] }
6058
+ ),
6059
+ pimTerm(
6060
+ "pitted",
6061
+ "Pitted",
6062
+ "Surface holes and pitting left unfilled, as in unfilled travertine.",
6063
+ PIM_FIGURE_SOURCE,
6064
+ { seenAs: ["Holes & Pitting"] }
6065
+ ),
6066
+ pimTerm(
6067
+ "brindled",
6068
+ "Brindled",
6069
+ "Irregular streaky variation running through the surface, as in a brindled coat.",
6070
+ PIM_FIGURE_SOURCE,
6071
+ { seenAs: ["Brindle"] }
6072
+ ),
6073
+ pimTerm(
6074
+ "mineral-inclusions",
6075
+ "Mineral inclusions",
6076
+ "Visible mineral deposits embedded within the surface.",
6077
+ PIM_FIGURE_SOURCE,
6078
+ { seenAs: ["Mineral Deposits"] }
6079
+ ),
6080
+ // `rustic` is deliberately not an alt label: it names a style, and prominent knots do not make a
6081
+ // timber rustic in the style sense, so treating the words as interchangeable would smuggle a
6082
+ // STYLE claim into a FIGURE one.
6083
+ pimTerm(
6084
+ "knotty",
6085
+ "Knotty",
6086
+ "Timber figure carrying prominent, frequent knots.",
6087
+ PIM_FIGURE_SOURCE,
6088
+ { seenAs: ["Knots"] }
6089
+ ),
6090
+ // AUTHORED. No Material Bank PIM column value names the absence of figure; clear grain is the
6091
+ // un-figured baseline that gives knotty, burl, fiddleback and bird's-eye something to contrast
6092
+ // against. It is not their parent: figure is unranked and unordered, and a plain surface is not
6093
+ // a kind of knotty one, only its absence.
6094
+ authoredTax57(
6095
+ "clear-grain",
6096
+ "Clear grain",
6097
+ "Timber figure free of knots, with an even, minimally figured grain."
6098
+ ),
6099
+ pimTerm(
6100
+ "burl",
6101
+ "Burl",
6102
+ "A swirling, densely clustered grain figure cut from a tree's burl growth.",
6103
+ `${PIM_FIGURE_SOURCE}; ${wikidata4("Q1483529", "burl")}`
6104
+ ),
6105
+ // AUTHORED. No Wikidata item for fiddleback figure on the review date.
6106
+ authoredTax57(
6107
+ "fiddleback",
6108
+ "Fiddleback",
6109
+ "A tight, uniform rippled figure running across the grain, historically prized for violin backs."
6110
+ ),
6111
+ pimTerm(
6112
+ "birds-eye",
6113
+ "Bird's eye",
6114
+ "Small, round, eye-like figure dots scattered through the grain, as in bird's-eye maple.",
6115
+ `${PIM_FIGURE_SOURCE}; ${wikidata4("Q164973", "bird's eye figure")}`
6116
+ )
6117
+ ];
6118
+
6119
+ // src/axes/pattern.ts
6120
+ var SOURCE4 = "pattern vocabulary in a furnishings retailer (src-03)";
6121
+ var SNAPSHOT6 = "2026-08-25";
6122
+ var RETRIEVAL_SNAPSHOT2 = "2026-08-27";
6123
+ var RETRIEVAL_SCALE = "ms_pattern_scale, a dictionary in a materials-retrieval system (src-05)";
6124
+ var RETRIEVAL_DENSITY = "ms_pattern_density, a dictionary in a materials-retrieval system (src-05)";
6125
+ var RETRIEVAL_REGULARITY = "ms_pattern_regularity, a dictionary in a materials-retrieval system (src-05)";
6126
+ var RETRIEVAL_DIRECTIONALITY = "ms_directionality, a dictionary in a materials-retrieval system (src-05)";
6127
+ var GEOMETRY_REVIEW_DATE = "2026-08-31";
6128
+ var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
6129
+ var REVIEW_DATE7 = "2026-09-11";
6130
+ var REVIEW_SOURCE6 = "everyday-interiors vocabulary review";
6131
+ var GEOMETRY_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
6132
+ var ANIMAL_PRINT_SLUG = "animal-print";
6133
+ var TAX58_DATE = "2026-09-27";
6134
+ var TAX58_SOURCE = "Linear TAX-58 visual-vocabulary review; MG-2218 reconciliation";
5852
6135
  var term7 = (slug, label, definition, extra = {}) => ({
5853
6136
  definition,
5854
6137
  label,
@@ -5925,6 +6208,35 @@ var PATTERN_TYPE_TERMS = [
5925
6208
  PIM_MOTIF_SOURCE,
5926
6209
  { broaderSlug: ANIMAL_PRINT_SLUG }
5927
6210
  ),
6211
+ // TAX-58, sitting between abstract-organic's fluid biomorphic forms and geometric's regular
6212
+ // grids; 5,015 records, all from Material Bank's catalogue feed crosswalk.
6213
+ {
6214
+ definition: "Angular, hard-edged graphic abstraction, distinct from fluid biomorphic abstraction and from regular geometric repeats.",
6215
+ introducedAt: TAX58_DATE,
6216
+ label: "Abstract graphic",
6217
+ provenance: {
6218
+ basis: "evidenced",
6219
+ snapshot: TAX58_DATE,
6220
+ source: TAX58_SOURCE
6221
+ },
6222
+ reviewedAt: TAX58_DATE,
6223
+ slug: "abstract-graphic"
6224
+ },
6225
+ // TAX-58. Filed under cultural-heritage, not as a root concept: the boteh motif is explicitly
6226
+ // drawn from a named textile tradition, which is that term's own boundary. 32 records.
6227
+ {
6228
+ broaderSlug: "cultural-heritage",
6229
+ definition: "The boteh teardrop motif of Persian and South Asian textile tradition.",
6230
+ introducedAt: TAX58_DATE,
6231
+ label: "Paisley",
6232
+ provenance: {
6233
+ basis: "evidenced",
6234
+ snapshot: TAX58_DATE,
6235
+ source: TAX58_SOURCE
6236
+ },
6237
+ reviewedAt: TAX58_DATE,
6238
+ slug: "paisley"
6239
+ },
5928
6240
  term7(
5929
6241
  "botanical",
5930
6242
  "Botanical",
@@ -6271,126 +6583,6 @@ var PATTERN_DIRECTIONALITY_TERMS = [
6271
6583
  "Two axes of equal weight, so the material reads correctly either way up."
6272
6584
  )
6273
6585
  ];
6274
- var PATTERN_FIGURE_TERMS = [
6275
- pimTerm(
6276
- "unvaried",
6277
- "Unvaried",
6278
- "No visible natural variation across the surface.",
6279
- PIM_FIGURE_SOURCE,
6280
- { seenAs: ["No Variation"] }
6281
- ),
6282
- pimTerm(
6283
- "speckled",
6284
- "Speckled",
6285
- "Fine flecks and speckles scattered across the surface.",
6286
- PIM_FIGURE_SOURCE,
6287
- { seenAs: ["Flecks & Speckles"] }
6288
- ),
6289
- pimTerm(
6290
- "linear-veining",
6291
- "Linear veining",
6292
- "Veining running in one consistent direction across the surface.",
6293
- PIM_FIGURE_SOURCE,
6294
- { seenAs: ["Linear Veins"] }
6295
- ),
6296
- pimTerm(
6297
- "multi-directional-veining",
6298
- "Multi-directional veining",
6299
- "Veining running in more than one direction across the surface, with no single dominant axis.",
6300
- PIM_FIGURE_SOURCE,
6301
- { seenAs: ["Multi-Directional Veins"] }
6302
- ),
6303
- pimTerm(
6304
- "mottled",
6305
- "Mottled",
6306
- "Uneven patches or blotches of tone breaking up an otherwise even surface.",
6307
- PIM_FIGURE_SOURCE
6308
- ),
6309
- pimTerm(
6310
- "cloudy",
6311
- "Cloudy",
6312
- "Soft, diffuse variation in tone with no distinct veins or edges, reading as drifting cloud.",
6313
- PIM_FIGURE_SOURCE
6314
- ),
6315
- pimTerm(
6316
- "breccia",
6317
- "Breccia",
6318
- "Angular fragments of stone bound within a contrasting matrix.",
6319
- `${PIM_FIGURE_SOURCE}; ${wikidata4("Q191250", "breccia")}`,
6320
- { seenAs: ["Angular Fragments"] }
6321
- ),
6322
- pimTerm(
6323
- "swirling",
6324
- "Swirling",
6325
- "Variation that curls and eddies across the surface rather than running in straight lines or veins.",
6326
- PIM_FIGURE_SOURCE
6327
- ),
6328
- pimTerm(
6329
- "fossiliferous",
6330
- "Fossil",
6331
- "Visible shells or fossil forms embedded in the surface.",
6332
- PIM_FIGURE_SOURCE,
6333
- { seenAs: ["Shells & Fossils"] }
6334
- ),
6335
- pimTerm(
6336
- "pitted",
6337
- "Pitted",
6338
- "Surface holes and pitting left unfilled, as in unfilled travertine.",
6339
- PIM_FIGURE_SOURCE,
6340
- { seenAs: ["Holes & Pitting"] }
6341
- ),
6342
- pimTerm(
6343
- "brindled",
6344
- "Brindled",
6345
- "Irregular streaky variation running through the surface, as in a brindled coat.",
6346
- PIM_FIGURE_SOURCE,
6347
- { seenAs: ["Brindle"] }
6348
- ),
6349
- pimTerm(
6350
- "mineral-inclusions",
6351
- "Mineral inclusions",
6352
- "Visible mineral deposits embedded within the surface.",
6353
- PIM_FIGURE_SOURCE,
6354
- { seenAs: ["Mineral Deposits"] }
6355
- ),
6356
- // `rustic` is deliberately not an alt label: it names a style, and prominent knots do not make a
6357
- // timber rustic in the style sense, so treating the words as interchangeable would smuggle a
6358
- // STYLE claim into a FIGURE one.
6359
- pimTerm(
6360
- "knotty",
6361
- "Knotty",
6362
- "Timber figure carrying prominent, frequent knots.",
6363
- PIM_FIGURE_SOURCE,
6364
- { seenAs: ["Knots"] }
6365
- ),
6366
- // AUTHORED. No Material Bank PIM column value names the absence of figure; clear grain is the
6367
- // un-figured baseline that gives knotty, burl, fiddleback and bird's-eye something to contrast
6368
- // against. It is not their parent: figure is unranked and unordered, and a plain surface is not
6369
- // a kind of knotty one, only its absence.
6370
- authoredTax57(
6371
- "clear-grain",
6372
- "Clear grain",
6373
- "Timber figure free of knots, with an even, minimally figured grain."
6374
- ),
6375
- pimTerm(
6376
- "burl",
6377
- "Burl",
6378
- "A swirling, densely clustered grain figure cut from a tree's burl growth.",
6379
- `${PIM_FIGURE_SOURCE}; ${wikidata4("Q1483529", "burl")}`
6380
- ),
6381
- // AUTHORED. No Wikidata item for fiddleback figure on the review date.
6382
- authoredTax57(
6383
- "fiddleback",
6384
- "Fiddleback",
6385
- "A tight, uniform rippled figure running across the grain, historically prized for violin backs."
6386
- ),
6387
- pimTerm(
6388
- "birds-eye",
6389
- "Bird's eye",
6390
- "Small, round, eye-like figure dots scattered through the grain, as in bird's-eye maple.",
6391
- `${PIM_FIGURE_SOURCE}; ${wikidata4("Q164973", "bird's eye figure")}`
6392
- )
6393
- ];
6394
6586
  var PATTERN_TERMS = [
6395
6587
  ...PATTERN_TYPE_TERMS,
6396
6588
  ...PATTERN_SCALE_TERMS,
@@ -7137,7 +7329,7 @@ var PRODUCT_CATEGORY_TERMS = [
7137
7329
  fromSearchCorpus(
7138
7330
  "wall-panel",
7139
7331
  "Wall panel",
7140
- "A panel product supplied to form or cover the visible face of a wall, independent of the panel material and the wall element behind it.",
7332
+ "A panel product supplied to form or cover the visible face of a wall, independent of the panel material and the wall element behind it; an external, weather-facing panel is cladding.",
7141
7333
  {
7142
7334
  altLabels: ["wall panelling", "wall paneling"],
7143
7335
  broaderSlug: "wallcovering",
@@ -7215,6 +7407,48 @@ var PRODUCT_CATEGORY_TERMS = [
7215
7407
  )
7216
7408
  ]
7217
7409
  }
7410
+ ),
7411
+ // Distinct from `wall-panel` and `wallcovering`, which finish a wall's visible face without
7412
+ // weathering it. Façade tile stays `tile` under tile's own definition. Uniclass's nearest Pr
7413
+ // code, Pr_25_71_14 "Cladding and lining panels", names both this category and interior lining
7414
+ // in one code, so it is not an exact match and is recorded as a dated negative instead.
7415
+ term8(
7416
+ "cladding",
7417
+ "Cladding",
7418
+ "A board or panel product supplied to form the external, weather-facing face of a building's walls, independent of its material and of the structure behind it; not a tile, a render or a glazed curtain wall.",
7419
+ {
7420
+ altLabels: [
7421
+ "siding",
7422
+ "facade cladding",
7423
+ "fa\xE7ade cladding",
7424
+ "exterior cladding",
7425
+ "rainscreen cladding",
7426
+ "facade panel"
7427
+ ],
7428
+ introducedAt: REVIEW_DATE8,
7429
+ provenance: { basis: "authored", source: REVIEW_SOURCE7 },
7430
+ reviewedAt: REVIEW_DATE8,
7431
+ searchedWithout: [
7432
+ searchedUniclassOnReview(
7433
+ "cladding, facade cladding, siding, rainscreen cladding"
7434
+ )
7435
+ ],
7436
+ seenAs: ["Facade", "Rainscreens", "Exterior Panel Systems"]
7437
+ }
7438
+ ),
7439
+ // A sofa bed stays `sofa`. Bedding is deliberately not added yet, because MaterialGraph has no
7440
+ // bedding products.
7441
+ term8(
7442
+ "bed",
7443
+ "Bed",
7444
+ "A furniture product supplied to sleep or lie on, or the frame or headboard made for one, independent of its material and size; not a mattress, bedding or a sofa bed.",
7445
+ {
7446
+ altLabels: ["bed frame"],
7447
+ external: [uniclass2("Pr_40_50_06", "Beds", "broad")],
7448
+ introducedAt: REVIEW_DATE8,
7449
+ provenance: { basis: "authored", source: REVIEW_SOURCE7 },
7450
+ reviewedAt: REVIEW_DATE8
7451
+ }
7218
7452
  )
7219
7453
  ];
7220
7454
 
@@ -11522,8 +11756,8 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
11522
11756
 
11523
11757
  // src/v1.ts
11524
11758
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
11525
- var TAXONOMY_SNAPSHOT = "2026-09-26";
11526
- var TAXONOMY_VERSION = "1.8.0";
11759
+ var TAXONOMY_SNAPSHOT = "2026-09-27";
11760
+ var TAXONOMY_VERSION = "1.9.0";
11527
11761
  var PUBLISHED_V1_BASELINE = "2026-08-30";
11528
11762
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
11529
11763
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -11827,6 +12061,11 @@ var HIERARCHY_REVIEW_LIFECYCLE = {
11827
12061
  };
11828
12062
  var AMBIGUITY_GOVERNANCE = "Taxonomy preserves the governed readings without assigning a default, role, contextual preference, or consumer route.";
11829
12063
  var ORDERED_READING_GOVERNANCE = "The two readings are deliberately separate; the default records trade usage and does not merge the concepts.";
12064
+ var TAXONOMY_SNAPSHOT_LIFECYCLE = {
12065
+ introducedAt: TAXONOMY_SNAPSHOT,
12066
+ reviewedAt: TAXONOMY_SNAPSHOT,
12067
+ status: "active"
12068
+ };
11830
12069
  var TAX57_DATE4 = "2026-09-26";
11831
12070
  var TAX57_LIFECYCLE = {
11832
12071
  introducedAt: TAX57_DATE4,
@@ -12576,6 +12815,61 @@ var AUTHORED_LEXICAL_ENTRIES = [
12576
12815
  }
12577
12816
  ]
12578
12817
  },
12818
+ // Two observed source spellings on the product-category axis that the inferred
12819
+ // readings promoted to customer equivalents. Each is a department label in one
12820
+ // catalogue; the seenAs evidence stays on the term, and only the reading is declined.
12821
+ {
12822
+ 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.",
12823
+ governance: lexicalGovernance(
12824
+ "A source department label is crosswalk evidence, not a customer reading of one concept.",
12825
+ { basis: "authored", source: "MaterialGraph MG-2226 category review" },
12826
+ TAXONOMY_SNAPSHOT_LIFECYCLE
12827
+ ),
12828
+ outcome: "declined",
12829
+ phrase: "fittings",
12830
+ reason: "A trade grouping spanning tapware, lighting and electrical fittings, not a kind of product."
12831
+ },
12832
+ {
12833
+ 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.",
12834
+ governance: lexicalGovernance(
12835
+ "A source department label is crosswalk evidence, not a customer reading of one concept.",
12836
+ { basis: "authored", source: "MaterialGraph MG-2226 category review" },
12837
+ TAXONOMY_SNAPSHOT_LIFECYCLE
12838
+ ),
12839
+ outcome: "declined",
12840
+ phrase: "electrical",
12841
+ reason: "Names a trade, not a kind of product."
12842
+ },
12843
+ // Two more declined readings, added alongside `cladding` for the same reason `fittings` and
12844
+ // `electrical` were declined: each phrase spans more than the one product category it might name.
12845
+ {
12846
+ 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.",
12847
+ governance: lexicalGovernance(
12848
+ "A compound phrase spanning an exterior product category and an interior finish is not one customer reading.",
12849
+ {
12850
+ basis: "authored",
12851
+ source: "@instruments/taxonomy 1.9.0 vocabulary review"
12852
+ },
12853
+ TAXONOMY_SNAPSHOT_LIFECYCLE
12854
+ ),
12855
+ outcome: "declined",
12856
+ phrase: "wall cladding",
12857
+ reason: "Names both the exterior cladding product category and interior stone or tile cladding; the bare phrase does not settle which."
12858
+ },
12859
+ {
12860
+ explanation: "Facade names the building element - the whole external wall face - not a purchasable product. A request for a product names a kind of thing to buy, and a facade is not itself a product.",
12861
+ governance: lexicalGovernance(
12862
+ "A building element is not a product category, whatever a source calls it.",
12863
+ {
12864
+ basis: "authored",
12865
+ source: "@instruments/taxonomy 1.9.0 vocabulary review"
12866
+ },
12867
+ TAXONOMY_SNAPSHOT_LIFECYCLE
12868
+ ),
12869
+ outcome: "declined",
12870
+ phrase: "facade",
12871
+ reason: "Names the building element, not a kind of product."
12872
+ },
12579
12873
  {
12580
12874
  explanation: "The phrase makes an environmental performance claim that needs product evidence, not a terminology-only mapping.",
12581
12875
  governance: lexicalGovernance(
package/dist/v1.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { ElementPlacement, ExternalMapping, ExternalScheme, PeriodSpan, RelationPredicate, SearchedWithout, StyleKind, TermProvenance, TermUsage, UsageWithheld } from "./term.js";
2
2
  export declare const TAXONOMY_BASE_URI: "https://taxonomy.materialinstruments.com";
3
- export declare const TAXONOMY_SNAPSHOT: "2026-09-26";
4
- export declare const TAXONOMY_VERSION: "1.8.0";
3
+ export declare const TAXONOMY_SNAPSHOT: "2026-09-27";
4
+ export declare const TAXONOMY_VERSION: "1.9.0";
5
5
  export type CanonicalConceptUri = `${typeof TAXONOMY_BASE_URI}/id/${string}`;
6
6
  export type LifecycleStatus = "active" | "deprecated";
7
7
  export interface Lifecycle {
@@ -135,7 +135,7 @@ export declare const TAXONOMY_CORPUS_METADATA: {
135
135
  readonly lexicalEntryCount: number;
136
136
  readonly nodeCount: number;
137
137
  readonly revision: string;
138
- readonly snapshot: "2026-09-26";
139
- readonly version: "1.8.0";
138
+ readonly snapshot: "2026-09-27";
139
+ readonly version: "1.9.0";
140
140
  };
141
141
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instruments/taxonomy",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Canonical data-only interiors and architecture knowledge graph and lexical corpus.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {