@instruments/taxonomy 1.2.0 → 1.3.1

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.
Files changed (35) hide show
  1. package/README.md +5 -5
  2. package/dist/authoring.d.ts +2 -2
  3. package/dist/axes/axis.d.ts +35 -0
  4. package/dist/axes/daylight.d.ts +7 -0
  5. package/dist/axes/index.d.ts +4 -33
  6. package/dist/axes/season.d.ts +2 -0
  7. package/dist/axes/space/shared.d.ts +6 -6
  8. package/dist/axes/tier.d.ts +3 -3
  9. package/dist/{materialgraph-crossover-sources.d.ts → crossover-sources.d.ts} +3 -3
  10. package/dist/estate/concepts.d.ts +10 -9
  11. package/dist/estate/index.d.ts +1 -1
  12. package/dist/estate/residue-report.d.ts +3 -3
  13. package/dist/estate/rows/architecture-projects.d.ts +2 -0
  14. package/dist/estate/rows/editorial-imagery.d.ts +2 -0
  15. package/dist/estate/rows/furnishings-retailer.d.ts +2 -0
  16. package/dist/estate/rows/materials-retrieval.d.ts +2 -0
  17. package/dist/estate/rows/paint-samples.d.ts +2 -0
  18. package/dist/estate/rows/rendering-pipeline.d.ts +2 -0
  19. package/dist/estate/sources.d.ts +77 -18
  20. package/dist/index.js +866 -673
  21. package/dist/search-corpus-source.d.ts +1 -3
  22. package/dist/term.d.ts +13 -7
  23. package/dist/v1.d.ts +4 -4
  24. package/package.json +1 -1
  25. package/dist/crosswalks/designshop.d.ts +0 -30
  26. package/dist/crosswalks/materialgraph.d.ts +0 -38
  27. package/dist/crosswalks/miu.d.ts +0 -13
  28. package/dist/downstream-check-policy.d.ts +0 -34
  29. package/dist/env.d.ts +0 -6
  30. package/dist/estate/rows/architizer.d.ts +0 -2
  31. package/dist/estate/rows/designround.d.ts +0 -2
  32. package/dist/estate/rows/designshop.d.ts +0 -2
  33. package/dist/estate/rows/materia.d.ts +0 -2
  34. package/dist/estate/rows/materialgraph.d.ts +0 -2
  35. package/dist/estate/rows/samplize.d.ts +0 -2
@@ -1,6 +1,4 @@
1
- export declare const MATERIALGRAPH_SEARCH_CORPUS_COMMIT: "53df40868bfb09bfe69bc66c455c051e34005ae1";
2
- export declare const MATERIALGRAPH_SEARCH_CORPUS_PATH: "packages/products/src/benchmark/fixtures/benchmark-cases-2026-07-31.1.json";
3
- export declare const MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT: "2026-07-31";
1
+ export declare const SEARCH_CORPUS_SNAPSHOT: "2026-07-31";
4
2
  /**
5
3
  * The fixture evidences searched language and admission need. Taxonomy authors the concept boundary;
6
4
  * neither an individual phrase nor the 244-query fixture as a whole is treated as that definition.
package/dist/term.d.ts CHANGED
@@ -39,7 +39,13 @@ export type SourceBasis =
39
39
  | "standard";
40
40
  export interface TermProvenance {
41
41
  basis: SourceBasis;
42
- /** The upstream file, corpus or standard. Free text, but always specific enough to re-read. */
42
+ /**
43
+ * The upstream standard, reference or source. A public standard or vocabulary is named outright
44
+ * and can be re-read by anyone. A private source is written as its kind and an opaque id, e.g.
45
+ * "PRICE_TIERS in a materials-retrieval system (src-05)": the id is stable, so every term citing
46
+ * one source can be shown to cite the same thing, and re-reading it means the steward resolving
47
+ * the id at the `snapshot` date. The date lives in `snapshot` and is never repeated here.
48
+ */
43
49
  source: string;
44
50
  /** ISO date the source was read. Absent only for `authored`. */
45
51
  snapshot?: string;
@@ -95,9 +101,9 @@ export type TermStatus = "active" | "deprecated";
95
101
  * value that appears regularly, `rare` one that barely does, and `unattested` a value the corpus
96
102
  * never uses. Set `usage` only where the named corpus can actually speak to the term: omitting it
97
103
  * says "not measured here", which is honest, whereas `unattested` against an unrelated corpus
98
- * would read as a claim about the term rather than about the corpus. The usage figures behind these derive from Material Bank's warehouse and
99
- * from the DesignShop capture; publishing a raw number would publish a figure from someone else's
100
- * business. The band carries the signal a reader actually needs - is this term common or rare -
104
+ * would read as a claim about the term rather than about the corpus. The usage figures behind these
105
+ * derive from a materials-marketplace catalogue and a furnishings retailer's room schemes; publishing a raw
106
+ * number would publish a figure from someone else's business. The band carries the signal a reader actually needs - is this term common or rare -
101
107
  * and nothing more.
102
108
  */
103
109
  export type UsageBand = "dominant" | "common" | "occasional" | "rare" | "unattested";
@@ -110,8 +116,8 @@ export interface TermUsage {
110
116
  /**
111
117
  * Why a term carries no usage band when the corpus plainly has something to say about it.
112
118
  *
113
- * The distinguishing case is `style.modernism`. DesignShop tags a dominant share of its room
114
- * schemes `Modern`, but that is the crosswalk row that DECLINES: `Modern` reads as either
119
+ * The distinguishing case is `style.modernism`. A furnishings retailer tags a dominant share of
120
+ * its schemes `Modern`, but that is the crosswalk row that DECLINES: `Modern` reads as either
115
121
  * `style.modernism` or `style.contemporary` and the source never recorded which. Attributing the
116
122
  * usage would smuggle in the guess the crosswalk refused to make.
117
123
  *
@@ -302,7 +308,7 @@ export type RelationPredicate =
302
308
  * the standing counterexample.
303
309
  */
304
310
  | "serves"
305
- /** This style or idiom draws on that place idiom or period. */
311
+ /** This style, idiom or scheme draws on that place idiom, period, building typology or season. */
306
312
  | "evokes"
307
313
  /** This style descends from that style. */
308
314
  | "influenced-by"
package/dist/v1.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { ElementPlacement, ExternalMapping, 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-01";
4
- export declare const TAXONOMY_VERSION: "1.2.0";
3
+ export declare const TAXONOMY_SNAPSHOT: "2026-09-11";
4
+ export declare const TAXONOMY_VERSION: "1.3.1";
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-01";
139
- readonly version: "1.2.0";
138
+ readonly snapshot: "2026-09-11";
139
+ readonly version: "1.3.1";
140
140
  };
141
141
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instruments/taxonomy",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "Canonical data-only interiors and architecture knowledge graph and lexical corpus.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -1,30 +0,0 @@
1
- import type { CanonicalisationInput, CanonicalisationVerdict } from "../canonicalisation.js";
2
- import type { CrosswalkMapping } from "./mapping.js";
3
- export declare const DESIGNSHOP_CROSSWALK_VERSION: "designshop-2026-08-31.1";
4
- export declare const DESIGNSHOP_SOURCE_SYSTEM: "designshop";
5
- export declare const DESIGNSHOP_SOURCE_FIELDS: readonly ["product_category", "material", "pattern", "finish", "format", "construction", "scheme_style", "product_style", "mood", "space", "requirement"];
6
- export type DesignShopSourceField = (typeof DESIGNSHOP_SOURCE_FIELDS)[number];
7
- type Mapping = CrosswalkMapping;
8
- /**
9
- * Source-specific rows. Source fields are deliberately retained: DesignShop's `material:Mosaic`
10
- * resolves to a format, and pretending the source field was already canonical would preserve its
11
- * category error instead of its evidence.
12
- */
13
- export declare const DESIGNSHOP_CROSSWALK: Readonly<Record<DesignShopSourceField, Readonly<Record<string, Mapping>>>>;
14
- export interface DesignShopCanonicalisationInput extends Omit<CanonicalisationInput, "sourceSystem" | "sourceField"> {
15
- sourceField: DesignShopSourceField;
16
- }
17
- /** Unknown values are unresolved, never declined. Declines require an explicit curated row. */
18
- export declare const canonicaliseDesignShop: (input: DesignShopCanonicalisationInput) => CanonicalisationVerdict;
19
- export interface DesignShopAppearanceTestVector {
20
- expectedAssertions: readonly string[];
21
- facets: readonly {
22
- sourceField: DesignShopSourceField;
23
- sourceValue: string;
24
- }[];
25
- id: string;
26
- market: "residential" | "commercial";
27
- }
28
- /** Shared fixtures prove axes compose instead of welding material identity to appearance. */
29
- export declare const DESIGNSHOP_APPEARANCE_TEST_VECTORS: readonly DesignShopAppearanceTestVector[];
30
- export {};
@@ -1,38 +0,0 @@
1
- import type { CanonicalisationInput, CanonicalisationVerdict } from "../canonicalisation.js";
2
- import type { BundleRole } from "../match.js";
3
- import type { CrosswalkMapping } from "./mapping.js";
4
- export declare const MATERIALGRAPH_CROSSWALK_VERSION: "materialgraph-2026-08-27.1";
5
- export declare const MATERIALGRAPH_SOURCE_SYSTEM: "materialgraph";
6
- export declare const MATERIALGRAPH_SNAPSHOT: "2026-08-27";
7
- /**
8
- * The two dictionaries this crosswalk covers. Both were `ms_`-prefixed until MaterialGraph renamed
9
- * them on 2026-08-27; the bare names are the current ones.
10
- */
11
- export declare const MATERIALGRAPH_SOURCE_FIELDS: readonly ["role", "character"];
12
- export type MaterialGraphSourceField = (typeof MATERIALGRAPH_SOURCE_FIELDS)[number];
13
- /**
14
- * Two `role` values that are not product properties at all, and where they actually go.
15
- *
16
- * A role IN A SCHEME is what `match.ts` already calls a `BundleRole`: `accent` means present and
17
- * deliberate but the scheme survives without it, `constitutive` means remove it and the thing stops
18
- * being what it is. A feature surface is the second by definition. Publishing these as a mapping to
19
- * the bundle role rather than as terms is what stops the same slab being permanently labelled a
20
- * feature surface because one scheme once used it as one.
21
- */
22
- export declare const MATERIALGRAPH_COMPOSITIONAL_ROLES: Readonly<Record<string, BundleRole>>;
23
- export declare const MATERIALGRAPH_CROSSWALK: Readonly<Record<MaterialGraphSourceField, Readonly<Record<string, CrosswalkMapping>>>>;
24
- export interface MaterialGraphCanonicalisationInput extends Omit<CanonicalisationInput, "sourceSystem" | "sourceField"> {
25
- sourceField: MaterialGraphSourceField;
26
- }
27
- /** Unknown values are unresolved, never declined. Declines require an explicit curated row. */
28
- export declare const canonicaliseMaterialGraph: (input: MaterialGraphCanonicalisationInput) => CanonicalisationVerdict;
29
- /**
30
- * The upstream dictionaries, vendored as id tuples so this file can be checked against them.
31
- *
32
- * Verbatim from materialgraph packages/schema/src/registry/value-dictionaries — `role` in
33
- * `material-semantics-core.ts`, `character` in `material-semantics-aesthetics.ts`, both at the
34
- * 2026-08-27 snapshot, after the rename that dropped their `ms_` prefixes.
35
- */
36
- export declare const MATERIALGRAPH_ROLE_VALUES: readonly ["wall_finish", "flooring", "ceiling", "joinery", "upholstery", "drapery", "accent", "worksurface", "casegoods", "feature_surface", "trim", "other"];
37
- export declare const MATERIALGRAPH_CHARACTER_VALUES: readonly ["quiet", "expressive", "restrained", "bold", "rustic", "crafted", "refined", "formal", "casual", "natural_reading", "synthetic_reading", "soft_reading", "hard_reading"];
38
- export declare const MATERIALGRAPH_SOURCE_VALUES: Readonly<Record<MaterialGraphSourceField, readonly string[]>>;
@@ -1,13 +0,0 @@
1
- import type { Application, MaterialFamily, Sector } from "../authoring.js";
2
- export declare const MIU_MATERIAL_FAMILIES: readonly ["wood", "wood_veneer", "engineered_wood", "bamboo", "cork", "natural_stone", "terrazzo", "ceramic_porcelain", "glass", "metal", "concrete", "plaster", "clay", "brick", "paint_coating", "wallcovering", "laminate", "solid_surface", "mineral_composite", "resin", "linoleum", "vinyl", "rubber", "carpet", "rug", "textile", "leather", "acoustic_felt", "acoustic_composite", "recycled_composite", "paper_cardboard", "biobased_composite", "greenery_planting", "lighting", "hardware", "digital_media", "water_feature", "mixed_material", "color_palette_only", "unknown"];
3
- export type MiuMaterialFamily = (typeof MIU_MATERIAL_FAMILIES)[number];
4
- export declare const MIU_FAMILY_TO_CANONICAL: Readonly<Record<MiuMaterialFamily, MaterialFamily | null>>;
5
- export declare const MIU_PROJECT_SECTORS: readonly ["hospitality", "food_and_beverage", "workplace", "residential", "multifamily", "retail_and_showroom", "healthcare", "wellness", "education", "civic", "cultural", "community", "sports_recreation", "entertainment", "industrial", "logistics", "maker", "transportation", "landscape_public_realm", "mixed_use", "master_planning", "temporary_exhibition", "religious", "senior_living", "student_housing", "unknown"];
6
- export type MiuProjectSector = (typeof MIU_PROJECT_SECTORS)[number];
7
- export declare const MIU_SECTOR_TO_CANONICAL: Readonly<Record<MiuProjectSector, Sector | null>>;
8
- export declare const MIU_SURFACE_APPLICATIONS: readonly ["flooring", "floor_inlay", "stair_tread", "stair_riser", "wall_finish", "wall_panel", "wainscot", "baseboard", "trim", "ceiling_finish", "ceiling_cloud", "column_wrap", "door_finish", "frame_finish", "shower_wall", "shower_floor", "backsplash", "vanity_top", "toilet_partition", "commercial_kitchen_floor", "kitchen_wall", "food_service_counter", "laundry_floor", "pool_deck_surface", "reception_desk", "bar_front", "bar_top", "back_bar", "banquette_base", "cabinet_front", "shelving", "display_fixture", "closet_system", "workstation_casework", "checkout_counter", "upholstery", "loose_furniture", "built_in_seating", "banquette_upholstery", "drapery", "window_treatment", "rug", "carpet_tile", "bedding", "privacy_curtain", "acoustic_fabric_panel", "lighting_fixture", "acoustic_treatment", "partition", "operable_wall", "signage", "wayfinding", "hardware", "plumbing_fixture", "decorative_screen", "art_installation", "green_wall", "facade_cladding", "soffit", "exterior_screen", "paving", "decking", "outdoor_furniture", "planter", "pool_coping", "shade_structure", "railing", "fence_screen", "unknown"];
9
- export type MiuSurfaceApplication = (typeof MIU_SURFACE_APPLICATIONS)[number];
10
- export declare const MIU_SURFACE_APPLICATION_TO_CANONICAL: Readonly<Record<MiuSurfaceApplication, Application | null>>;
11
- export declare const miuFamilyToCanonical: (value: string) => MaterialFamily | null;
12
- export declare const miuSectorToCanonical: (value: string) => Sector | null;
13
- export declare const miuSurfaceApplicationToCanonical: (value: string) => Application | null;
@@ -1,34 +0,0 @@
1
- /**
2
- * Whether a cross-repository check may skip, or must fail for want of its subject.
3
- *
4
- * A check that no-ops when it cannot find what it inspects reads green forever, and this
5
- * one has already rotted that way once: the materialgraph sync test asserted nothing for
6
- * twelve days after a file split, unnoticed, because it only ran where a sibling checkout
7
- * happened to exist and never in CI.
8
- *
9
- * Blanket-failing is not the fix either. CI legitimately has no sibling repo, so a hard
10
- * requirement would break every run for a condition nobody can satisfy there.
11
- *
12
- * So the strictness is opt-in and explicit. By default an absent checkout skips, which is
13
- * honest about what CI can see. A context that is *meant* to be able to run the check —
14
- * a release gate, a verification pass, a developer who wants to know — sets the
15
- * environment variable, and then a missing checkout is a failure rather than a shrug.
16
- */
17
- export declare const REQUIRE_DOWNSTREAM_CHECK_ENV = "TAXONOMY_REQUIRE_DOWNSTREAM_CHECKS";
18
- export type DownstreamCheckDecision = {
19
- kind: "run";
20
- } | {
21
- kind: "skip";
22
- reason: string;
23
- } | {
24
- kind: "fail";
25
- reason: string;
26
- };
27
- export declare const decideDownstreamCheck: (input: {
28
- /** Whether the thing being inspected is actually on disk. */
29
- subjectPresent: boolean;
30
- /** What is being looked for, named in the failure so it is actionable. */
31
- subjectLabel: string;
32
- /** The raw environment value; any non-empty value other than "0"/"false" means strict. */
33
- requireFlag: string | undefined;
34
- }) => DownstreamCheckDecision;
package/dist/env.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Whether cross-repository checks must fail rather than skip when their subject is
3
- * missing. Undefined in almost every context, including CI — see
4
- * `downstream-check-policy` for why that default is the honest one.
5
- */
6
- export declare const readRequireDownstreamChecks: () => string | undefined;
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const ARCHITIZER_ROWS: readonly Row[];
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const DESIGNROUND_ROWS: readonly Row[];
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const DESIGNSHOP_ROWS: readonly Row[];
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const MATERIA_ROWS: readonly Row[];
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const MATERIALGRAPH_ROWS: readonly Row[];
@@ -1,2 +0,0 @@
1
- import type { Row } from "../decomposition.js";
2
- export declare const SAMPLIZE_ROWS: readonly Row[];