@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
package/README.md CHANGED
@@ -6,11 +6,11 @@ The canonical, data-only interiors and architecture terminology corpus.
6
6
 
7
7
  The package root exports the governed corpus and its release metadata:
8
8
 
9
- - `TAXONOMY_BASE_URI` — the authority used for every canonical concept URI.
10
- - `KNOWLEDGE_GRAPH` — normalized axis, facet, and concept nodes plus typed, bidirectional edges.
11
- - `LEXICAL_ENTRIES` — exhaustive declarative `equivalent`, `ambiguous`, and `declined` records for every canonical or observed authored spelling.
12
- - `TAXONOMY_CORPUS_METADATA` — deterministic node, edge, and lexical counts with the corpus revision, snapshot, and package version.
13
- - `TAXONOMY_CORPUS_REVISION`, `TAXONOMY_SNAPSHOT`, and `TAXONOMY_VERSION` — the exact content fingerprint, source snapshot, and package release identifiers.
9
+ - `TAXONOMY_BASE_URI` - the authority used for every canonical concept URI.
10
+ - `KNOWLEDGE_GRAPH` - normalized axis, facet, and concept nodes plus typed, bidirectional edges.
11
+ - `LEXICAL_ENTRIES` - exhaustive declarative `equivalent`, `ambiguous`, and `declined` records for every canonical or observed authored spelling.
12
+ - `TAXONOMY_CORPUS_METADATA` - deterministic node, edge, and lexical counts with the corpus revision, snapshot, and package version.
13
+ - `TAXONOMY_CORPUS_REVISION`, `TAXONOMY_SNAPSHOT`, and `TAXONOMY_VERSION` - the exact content fingerprint, source snapshot, and package release identifiers.
14
14
 
15
15
  It also exports the TypeScript types for those values. It does not export a resolver, matcher, ranker, search route, local IDs, semantic IDs, or legacy aliases. Consumers build policy on top of the same data; the repository's private HTTP adapter is one such consumer.
16
16
 
@@ -11,13 +11,13 @@ export { type AlternativeReason, type AlternativesMatch, type BundleMatch, type
11
11
  export { ASSERTION_KEYS, canonicalAssertion, deprecatedAssertions, isCanonicalAssertion, type ParsedAssertion, parseAssertion, RELATION_PREDICATES, type ResolvedAssertion, resolveAssertion, resolveReference, type TermLocation, AUTHORING_LOCATIONS, unknownAssertions, } from "./assertions.js";
12
12
  export { isInterchangeable, MATCH_STRENGTHS, SKOS_MATCH_PREDICATE, } from "./crosswalks/strength.js";
13
13
  export { ambiguous as ambiguousMapping, approximates as approximateMapping, constitutive as constitutiveMapping, type CrosswalkMapping, declined as declinedMapping, resolved as resolvedMapping, } from "./crosswalks/mapping.js";
14
- export { AXES, AXIS_SLUGS, type Axis, type AxisFacet, type AxisSlug, axisBySlug, axisTerms, CONSTRUCTION_TERMS, ELEMENT_TERMS, FINISH_TERMS, FORMAT_TERMS, INSTALLATION_LAYOUT_TERMS, MATERIAL_TERMS, MOOD_TERMS, PALETTE_CHARACTER_TERMS, PALETTE_FACETS, PALETTE_HUE_TERMS, PALETTE_TEMPERATURE_TERMS, PATTERN_TERMS, type PaletteFacet, PERIOD_TERMS, periodAt, periodsAt, PLACE_FACETS, PLACE_LANDSCAPE_TERMS, PLACE_REGION_TERMS, PRODUCT_CATEGORY_TERMS, REQUIREMENT_TERMS, type PlaceFacet, MARKET_NEUTRAL_SPACES, marketsServed, MOOD_ANCHORS, moodAnchorsFor, PERIOD_ANCHORS, periodAnchorsFor, PLACE_ANCHORS, placeAnchorsFor, SPACE_ANCHORS, spaceAnchorsFor, SPACE_SECTORS, SPACE_TERMS, type SpaceSector, type Anchors, anchorsFor, STYLE_ANCHORS, type StyleSlug, STYLE_TERMS, TYPOLOGY_TERMS, UNIT_SHAPE_TERMS, } from "./axes/index.js";
14
+ export { AXES, AXIS_SLUGS, type Axis, type AxisFacet, type AxisSlug, axisBySlug, axisTerms, CONSTRUCTION_TERMS, DAYLIGHT_ASPECT_TERMS, DAYLIGHT_FACETS, DAYLIGHT_LIGHT_TERMS, type DaylightFacet, ELEMENT_TERMS, FINISH_TERMS, FORMAT_TERMS, INSTALLATION_LAYOUT_TERMS, MATERIAL_TERMS, MOOD_TERMS, PALETTE_CHARACTER_TERMS, PALETTE_FACETS, PALETTE_HUE_TERMS, PALETTE_TEMPERATURE_TERMS, PATTERN_TERMS, type PaletteFacet, PERIOD_TERMS, periodAt, periodsAt, PLACE_FACETS, PLACE_LANDSCAPE_TERMS, PLACE_REGION_TERMS, PRODUCT_CATEGORY_TERMS, REQUIREMENT_TERMS, SEASON_TERMS, type PlaceFacet, MARKET_NEUTRAL_SPACES, marketsServed, MOOD_ANCHORS, moodAnchorsFor, PERIOD_ANCHORS, periodAnchorsFor, PLACE_ANCHORS, placeAnchorsFor, SPACE_ANCHORS, spaceAnchorsFor, SPACE_SECTORS, SPACE_TERMS, type SpaceSector, type Anchors, anchorsFor, STYLE_ANCHORS, type StyleSlug, STYLE_TERMS, TYPOLOGY_TERMS, UNIT_SHAPE_TERMS, } from "./axes/index.js";
15
15
  export { assertionMeaningFrom, type AmbiguousCanonicalisation, type CanonicalisationInput, type CanonicalisationVerdict, type DeclinedCanonicalisation, type ResolvedCanonicalisation, type UnresolvedCanonicalisation, } from "./canonicalisation.js";
16
16
  export { type AmbiguousAssertionMeaning, type AssertionAuthority, type AssertionMeaning, type AssertionPolarity, type AssertionProvenance, type AssertionRole, type AssertionScope, type PortableAssertionTestVector, type PortableTasteAssertion, PORTABLE_ASSERTION_TEST_VECTORS, type ProjectContextAssertion, type RequirementAssertion, type RequirementConstraint, type RequirementOperator, type ResolvedAssertionMeaning, TAXONOMY_SNAPSHOT_VERSION, TASTE_ASSERTION_CONTRACT_VERSION, type TasteAssertion, type UnresolvedAssertionMeaning, } from "./taste-assertion.js";
17
17
  export { APPLICATION_TERMS, MATERIAL_FAMILY_TERMS, SECTOR_TERMS, } from "./dictionaries.js";
18
18
  export declare const PROVENANCE: {
19
19
  readonly snapshot: "2026-07-08";
20
- readonly source: "materialgraph packages/schema/src/registry/value-dictionaries.ts";
20
+ readonly source: "value dictionaries in a materials-retrieval system (src-05)";
21
21
  };
22
22
  export { KNOWLEDGE_GRAPH, LEXICAL_ENTRIES, TAXONOMY_BASE_URI, type AxisNode, type CanonicalConceptUri, type ColorScopeTarget, type ConceptNode, type ExternalReference, type FacetNode, type GraphPredicate, type KnowledgeGraph, type KnowledgeGraphEdge, type KnowledgeGraphNode, type LexicalEntry, type LexicalContext, type LexicalTarget, type Lifecycle, type Governance, TAXONOMY_SNAPSHOT, type TaxonomyTarget, } from "./v1.js";
23
23
  export declare const MATERIAL_FAMILIES: readonly ["paint", "wall-finish", "wallcovering", "textile", "upholstery", "carpet", "wood", "stone", "tile", "terrazzo", "metal", "glass", "resilient-flooring", "composite", "concrete", "leather", "other"];
@@ -0,0 +1,35 @@
1
+ import type { Term } from "../term.js";
2
+ export declare const AXIS_SLUGS: readonly ["material-family", "product-category", "material", "pattern", "finish", "format", "unit-shape", "installation-layout", "construction", "requirement", "sector", "application", "space", "element", "typology", "style", "period", "mood", "palette", "place", "daylight", "season", "tier", "procurement", "strategy", "form", "density"];
3
+ export type AxisSlug = (typeof AXIS_SLUGS)[number];
4
+ export interface AxisGovernance {
5
+ introducedAt: string;
6
+ provenance: NonNullable<Term["provenance"]>;
7
+ reviewedAt: string;
8
+ }
9
+ export interface AxisFacet {
10
+ governance?: AxisGovernance;
11
+ label: string;
12
+ slug: string;
13
+ terms: readonly Term[];
14
+ }
15
+ export interface Axis {
16
+ slug: AxisSlug;
17
+ label: string;
18
+ /** The question the axis answers, in a reader's words. One line. */
19
+ question: string;
20
+ /**
21
+ * Where this axis ends and its nearest neighbour begins, with the criterion that decides it.
22
+ * Rendered verbatim on the axis page, because a boundary nobody can read is a boundary that gets
23
+ * re-litigated.
24
+ */
25
+ boundary: string;
26
+ /** `authored` ships terms. `declared` is a real question with no terms yet, and says so. */
27
+ status: "authored" | "declared";
28
+ /** Lifecycle and provenance for the axis identity itself. Old axes omit this and use V1 baseline governance. */
29
+ governance?: AxisGovernance;
30
+ /** Single-dictionary axes carry one facet named for the axis. */
31
+ facets: readonly AxisFacet[];
32
+ /** Why the axis has no terms yet. Present only when status is "declared". */
33
+ gap?: string;
34
+ }
35
+ export declare const single: (slug: string, label: string, terms: readonly Term[], governance?: AxisGovernance) => readonly AxisFacet[];
@@ -0,0 +1,7 @@
1
+ import type { Term } from "../term.js";
2
+ /** Which way a room's principal windows face. Compass-literal; unordered. */
3
+ export declare const DAYLIGHT_ASPECT_TERMS: readonly Term[];
4
+ /** How much daylight a room receives for its use, low to high. */
5
+ export declare const DAYLIGHT_LIGHT_TERMS: readonly Term[];
6
+ export declare const DAYLIGHT_FACETS: readonly ["aspect", "light"];
7
+ export type DaylightFacet = (typeof DAYLIGHT_FACETS)[number];
@@ -1,43 +1,13 @@
1
1
  import type { Term } from "../term.js";
2
- export declare const AXIS_SLUGS: readonly ["material-family", "product-category", "material", "pattern", "finish", "format", "unit-shape", "installation-layout", "construction", "requirement", "sector", "application", "space", "element", "typology", "style", "period", "mood", "palette", "place", "tier", "procurement", "strategy", "form", "density"];
3
- export type AxisSlug = (typeof AXIS_SLUGS)[number];
4
- export interface AxisGovernance {
5
- introducedAt: string;
6
- provenance: NonNullable<Term["provenance"]>;
7
- reviewedAt: string;
8
- }
9
- export interface AxisFacet {
10
- governance?: AxisGovernance;
11
- label: string;
12
- slug: string;
13
- terms: readonly Term[];
14
- }
15
- export interface Axis {
16
- slug: AxisSlug;
17
- label: string;
18
- /** The question the axis answers, in a reader's words. One line. */
19
- question: string;
20
- /**
21
- * Where this axis ends and its nearest neighbour begins, with the criterion that decides it.
22
- * Rendered verbatim on the axis page, because a boundary nobody can read is a boundary that gets
23
- * re-litigated.
24
- */
25
- boundary: string;
26
- /** `authored` ships terms. `declared` is a real question with no terms yet, and says so. */
27
- status: "authored" | "declared";
28
- /** Lifecycle and provenance for the axis identity itself. Old axes omit this and use V1 baseline governance. */
29
- governance?: AxisGovernance;
30
- /** Single-dictionary axes carry one facet named for the axis. */
31
- facets: readonly AxisFacet[];
32
- /** Why the axis has no terms yet. Present only when status is "declared". */
33
- gap?: string;
34
- }
2
+ import type { Axis, AxisSlug } from "./axis.js";
35
3
  export declare const AXES: readonly Axis[];
4
+ export { type Axis, type AxisFacet, AXIS_SLUGS, type AxisGovernance, type AxisSlug, } from "./axis.js";
36
5
  export declare const axisBySlug: (slug: AxisSlug) => Axis | undefined;
37
6
  /** Every term on an axis, across all its facets. */
38
7
  export declare const axisTerms: (axis: Axis) => readonly Term[];
39
8
  export { ELEMENT_TERMS } from "./element.js";
40
9
  export { CONSTRUCTION_TERMS } from "./construction.js";
10
+ export { DAYLIGHT_ASPECT_TERMS, DAYLIGHT_FACETS, DAYLIGHT_LIGHT_TERMS, type DaylightFacet, } from "./daylight.js";
41
11
  export { FINISH_TERMS } from "./finish.js";
42
12
  export { FORMAT_TERMS } from "./format.js";
43
13
  export { INSTALLATION_LAYOUT_TERMS } from "./installation-layout.js";
@@ -46,6 +16,7 @@ export { MOOD_TERMS } from "./mood.js";
46
16
  export { PATTERN_TERMS } from "./pattern.js";
47
17
  export { PRODUCT_CATEGORY_TERMS } from "./product-category.js";
48
18
  export { REQUIREMENT_TERMS } from "./requirement.js";
19
+ export { SEASON_TERMS } from "./season.js";
49
20
  export { PALETTE_CHARACTER_TERMS, PALETTE_FACETS, PALETTE_HUE_TERMS, PALETTE_TEMPERATURE_TERMS, type PaletteFacet, } from "./palette.js";
50
21
  export { PERIOD_TERMS, periodAt, periodsAt } from "./period.js";
51
22
  export { PLACE_FACETS, PLACE_LANDSCAPE_TERMS, PLACE_REGION_TERMS, type PlaceFacet, } from "./place.js";
@@ -0,0 +1,2 @@
1
+ import type { Term } from "../term.js";
2
+ export declare const SEASON_TERMS: readonly Term[];
@@ -1,18 +1,18 @@
1
1
  import type { Sector } from "../../authoring.js";
2
2
  import type { ExternalMapping, MatchStrength, TermProvenance, TermRelation, TermUsage, UsageBand } from "../../term.js";
3
3
  export declare const VENDORED_SNAPSHOT = "2026-08-21";
4
- export declare const DESIGNSHOP_SNAPSHOT = "2026-08-18";
5
- export declare const DESIGNSHOP_CORPUS = "designshop room schemes";
4
+ export declare const SCHEME_SNAPSHOT = "2026-08-18";
5
+ export declare const SCHEME_CORPUS = "room schemes in a furnishings retailer (src-03)";
6
6
  export declare const aat: (slug: string, label: string, match: MatchStrength) => ExternalMapping;
7
7
  /** The governed commercial dictionary the 0.2 draft was built from, kept for its consumed ids. */
8
8
  export declare const MS_ROOM: TermProvenance;
9
9
  /** Both dictionaries name this room. The ms_room id wins; both upstreams are recorded. */
10
- export declare const MS_ROOM_MIU: TermProvenance;
10
+ export declare const MS_ROOM_PROGRAM: TermProvenance;
11
11
  export declare const AUTHORED: TermProvenance;
12
12
  export declare const EVIDENCED: TermProvenance;
13
- export declare const designshopUsage: (band: UsageBand) => TermUsage;
14
- /** The spine. 172 snake_case values, flat, read from taxonomy-values-core.ts. */
15
- export declare const MIU: TermProvenance;
13
+ export declare const schemeUsage: (band: UsageBand) => TermUsage;
14
+ /** The spine. 172 snake_case values, flat. */
15
+ export declare const PROGRAM_SPACES: TermProvenance;
16
16
  /**
17
17
  * Association with no stronger claim available. Named because several terms carry one and the
18
18
  * predicate has to read the same on all of them.
@@ -3,12 +3,12 @@ import type { Term } from "../term.js";
3
3
  * The positioning ladder. Where a maker, a product line or a project sits in the market, as a
4
4
  * judgement anyone in the trade would recognise.
5
5
  *
6
- * The five values materialgraph's brand extractor is instructed to choose between, minus
6
+ * The five values a materials-retrieval system's brand extractor is instructed to choose between, minus
7
7
  * `trade-only`, which is a channel and already has its own dictionary there. `evidenced` rather
8
8
  * than `vendored`, because the list is not a dictionary anywhere upstream - it exists in a prompt
9
9
  * string and a column comment, and writing it down as a vocabulary is the point of this facet.
10
10
  *
11
- * materialsinuse's budget bands are the same ladder under other names, so its `budget` and
11
+ * A project-materials database's budget bands are the same ladder under other names, so its `budget` and
12
12
  * `mid_market` sit in `seenAs` on the rungs they mean rather than becoming extra terms.
13
13
  *
14
14
  * `seenAs` HERE CARRIES ONLY FORMS ACTUALLY FOUND UPSTREAM. The trade uses a dozen words for each
@@ -34,7 +34,7 @@ export type TierFacet = (typeof TIER_FACETS)[number];
34
34
  /**
35
35
  * The next rung down on a term's own ladder, or undefined at the bottom.
36
36
  *
37
- * Exists because the question is asked: materialgraph ships a `cheaperTier()` that walks its price
37
+ * Exists because the question is asked: a materials-retrieval system ships a `cheaperTier()` that walks its price
38
38
  * ladder to answer "show me this, but less expensive". Answering it here means one implementation
39
39
  * of the step rather than one per consumer, and it refuses at the bottom rather than clamping,
40
40
  * because a bottom rung with nothing below it is a real answer.
@@ -1,4 +1,4 @@
1
- export declare const MATERIALGRAPH_CROSSOVER_SOURCE = "materialgraph@b55d7ad33807d9653bd4838b7908fb1d100440a8:packages/products/src/search/colour-material-lexicon.ts:46-102";
1
+ export declare const RETRIEVAL_LEXICON_SOURCE = "colour-material lexicon in a materials-retrieval system (src-05)";
2
2
  export declare const COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@c0662caabe7cd8604241a8a7b2608fa5bc71de51:packages/core/data/reference/v1/taxonomy.json";
3
3
  export declare const BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
4
4
  export declare const BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
@@ -48,5 +48,5 @@ export declare const CROSSOVER_DEFINITION_SOURCES: {
48
48
  readonly wood: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
49
49
  readonly wool: "https://www.fao.org/docrep/pdf/012/i0987e/i0987e00.pdf";
50
50
  };
51
- export type MaterialGraphCrossoverPhrase = keyof typeof CROSSOVER_DEFINITION_SOURCES;
52
- export declare const crossoverSource: (phrase: MaterialGraphCrossoverPhrase) => string;
51
+ export type CrossoverPhrase = keyof typeof CROSSOVER_DEFINITION_SOURCES;
52
+ export declare const crossoverSource: (phrase: CrossoverPhrase) => string;
@@ -1,5 +1,5 @@
1
1
  import type { Row } from "./decomposition.js";
2
- export declare const ESTATE_REPOS: readonly ["materia", "architizer", "designround", "designshop", "materialgraph", "samplize"];
2
+ export declare const ESTATE_REPOS: readonly ["rendering-pipeline", "architecture-projects", "editorial-imagery", "furnishings-retailer", "materials-retrieval", "paint-samples"];
3
3
  export type EstateRepo = (typeof ESTATE_REPOS)[number];
4
4
  export interface ConceptCell {
5
5
  source: string;
@@ -28,10 +28,10 @@ export interface Concept {
28
28
  * How many repositories could plausibly have reached this concept: those carrying any vocabulary
29
29
  * on the same axis.
30
30
  *
31
- * NOT the repository count, and the difference started mattering the moment samplize joined the
32
- * census. Samplize's vocabulary is colour and nothing else, so it can never reach `style.rustic`
33
- * and counting it against that row would report a disagreement where there is only a different
34
- * subject. Six repositories, but only five of them have anything to say about style, and only
31
+ * NOT the repository count, and the difference started mattering the moment the paint-sample
32
+ * retailer joined the census. Its vocabulary is colour and nothing else, so it can never reach
33
+ * `style.rustic` and counting it against that row would report a disagreement where there is only
34
+ * a different subject. Six repositories, but only five of them have anything to say about style, and only
35
35
  * three about colour.
36
36
  */
37
37
  couldReach: number;
@@ -64,8 +64,8 @@ export interface AxisDisagreement {
64
64
  * The disagreement matrix, split one table per axis.
65
65
  *
66
66
  * ONE TABLE MIXING AXES IS SPARSE BY CONSTRUCTION, and the sparseness is not a finding. Each
67
- * repository speaks about some axes and not others: samplize's vocabulary is colour and nothing
68
- * else, so against every style concept it is a column of dashes. Rendered as one table that reads
67
+ * repository speaks about some axes and not others: the paint-sample retailer's vocabulary is colour
68
+ * and nothing else, so against every style concept it is a column of dashes. Rendered as one table that reads
69
69
  * as six repositories disagreeing when it is really six repositories talking about different
70
70
  * subjects, and it costs enough width to break the canonical identifiers across three lines.
71
71
  *
@@ -100,10 +100,11 @@ export declare const agreementSummary: () => {
100
100
  spellingOnly: number;
101
101
  };
102
102
  /**
103
- * The share of the DesignShop corpus the two ambiguous style values account for, as a percentage.
103
+ * The share of a furnishings retailer's room schemes the two ambiguous style values account for, as a
104
+ * percentage.
104
105
  *
105
106
  * A SHARE AND NOT A COUNT, and the distinction is the whole reason this function exists rather than
106
- * a consumer reading `DESIGNSHOP_SCHEME_STYLE_COUNTS` directly. The underlying figures are a third
107
+ * a consumer reading `ROOM_SCHEME_STYLE_COUNTS` directly. The underlying figures are a third
107
108
  * party's catalogue volumes and are not ours to publish. The claim anything downstream actually
108
109
  * needs is that `Modern` and `Contemporary` sit at comparable volume and together account for a
109
110
  * large slice of the corpus - which a percentage carries exactly as well and a count carries no
@@ -1,4 +1,4 @@
1
1
  export { agreementSummary, ambiguousStyleShare, concepts, type AxisDisagreement, disagreementsByAxis, type Concept, type ConceptCell, ESTATE_REPOS, type EstateRepo, MATRIX_COLUMNS, } from "./concepts.js";
2
2
  export { DECOMPOSITION, type OutOfAxisReason, type Row, type Verdict, } from "./decomposition.js";
3
3
  export { declaredGaps, mintingDemand, rateBySource, type ResidueReport, residueReport, unresolved, } from "./residue-report.js";
4
- export { ARCHITIZER_STYLES, DESIGNROUND_STYLE_ANCHORS, DESIGNSHOP_PRODUCT_STYLES, DESIGNSHOP_SCHEME_STYLE_COUNTS, DESIGNSHOP_SCHEME_STYLES, ESTATE_VOCABULARIES, type EstateVocabulary, MATERIA_INTENT_KEYWORDS, MATERIA_SCENE_MOOD, MATERIALGRAPH_MS_CHARACTER, MATERIALGRAPH_MS_MOOD, MATERIALGRAPH_MS_STYLE, type VocabularyKind, } from "./sources.js";
4
+ export { ARCHITECTURE_PROJECTS_STYLES, EDITORIAL_STYLE_ANCHORS, RETAIL_PRODUCT_STYLES, ROOM_SCHEME_STYLE_COUNTS, ROOM_SCHEME_STYLES, ESTATE_VOCABULARIES, type EstateVocabulary, RENDERING_INTENT_KEYWORDS, RENDERING_SCENE_MOOD, RETRIEVAL_MS_CHARACTER, RETRIEVAL_MS_MOOD, RETRIEVAL_MS_STYLE, type VocabularyKind, } from "./sources.js";
@@ -17,9 +17,9 @@ export interface ResidueReport {
17
17
  /**
18
18
  * The circularity guard. The axes here were authored after reading these terms, so the headline
19
19
  * rate is partly fitted to its own inputs. This is the share that decomposes onto canon that
20
- * existed BEFORE the test - vendored from materialgraph, colorscope and architizer, or already
21
- * published in this package. It is the floor the design would have reached with no new authoring
22
- * at all, and it is the number to argue with.
20
+ * existed BEFORE the test - vendored from the materials-retrieval system, colorscope and the
21
+ * architecture-projects platform, or already published in this package. It is the floor the
22
+ * design would have reached with no new authoring at all, and it is the number to argue with.
23
23
  */
24
24
  preExistingRate: number;
25
25
  preExisting: number;
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const ARCHITECTURE_PROJECTS_ROWS: readonly Row[];
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const EDITORIAL_ROWS: readonly Row[];
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const RETAILER_ROWS: readonly Row[];
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const RETRIEVAL_ROWS: readonly Row[];
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const PAINT_SAMPLE_ROWS: readonly Row[];
@@ -0,0 +1,2 @@
1
+ import type { Row } from "../decomposition.js";
2
+ export declare const RENDERING_ROWS: readonly Row[];
@@ -1,3 +1,63 @@
1
+ export interface CitedSource {
2
+ /** Stable and opaque. Never reassigned, never a name, and never decoded here. */
3
+ id: string;
4
+ /** How the source is written in prose, article included. */
5
+ name: string;
6
+ /** The same source as one token: a column key, a repository key, a vocabulary id prefix. */
7
+ slug: string;
8
+ /** The same source as a column heading, without the article. */
9
+ label: string;
10
+ }
11
+ export declare const CITED_SOURCES: {
12
+ readonly ARCHITECTURE_PROJECTS: {
13
+ readonly id: "src-01";
14
+ readonly label: "architecture-projects platform";
15
+ readonly name: "an architecture-projects platform";
16
+ readonly slug: "architecture-projects";
17
+ };
18
+ readonly EDITORIAL_IMAGERY: {
19
+ readonly id: "src-02";
20
+ readonly label: "editorial image library";
21
+ readonly name: "an editorial image library";
22
+ readonly slug: "editorial-imagery";
23
+ };
24
+ readonly FURNISHINGS_RETAILER: {
25
+ readonly id: "src-03";
26
+ readonly label: "furnishings retailer";
27
+ readonly name: "a furnishings retailer";
28
+ readonly slug: "furnishings-retailer";
29
+ };
30
+ readonly MARKETPLACE_CATALOGUE: {
31
+ readonly id: "src-04";
32
+ readonly label: "materials-marketplace catalogue";
33
+ readonly name: "a materials-marketplace catalogue";
34
+ readonly slug: "materials-marketplace";
35
+ };
36
+ readonly MATERIALS_RETRIEVAL: {
37
+ readonly id: "src-05";
38
+ readonly label: "materials-retrieval system";
39
+ readonly name: "a materials-retrieval system";
40
+ readonly slug: "materials-retrieval";
41
+ };
42
+ readonly PAINT_SAMPLES: {
43
+ readonly id: "src-06";
44
+ readonly label: "paint-sample retailer";
45
+ readonly name: "a paint-sample retailer";
46
+ readonly slug: "paint-samples";
47
+ };
48
+ readonly PROJECT_MATERIALS: {
49
+ readonly id: "src-07";
50
+ readonly label: "project-materials database";
51
+ readonly name: "a project-materials database";
52
+ readonly slug: "project-materials";
53
+ };
54
+ readonly RENDERING_PIPELINE: {
55
+ readonly id: "src-08";
56
+ readonly label: "rendering pipeline";
57
+ readonly name: "a rendering pipeline";
58
+ readonly slug: "rendering-pipeline";
59
+ };
60
+ };
1
61
  export type VocabularyKind =
2
62
  /** A closed enum a writer must choose from. */
3
63
  "enum"
@@ -11,37 +71,36 @@ export interface EstateVocabulary {
11
71
  id: string;
12
72
  name: string;
13
73
  repo: string;
14
- file: string;
15
74
  snapshot: string;
16
75
  kind: VocabularyKind;
17
76
  /** What question the vocabulary was built to answer, in the authors' own framing. */
18
77
  purpose: string;
19
78
  terms: readonly string[];
20
79
  }
21
- export declare const MATERIA_SCENE_MOOD: EstateVocabulary;
22
- export declare const MATERIA_INTENT_KEYWORDS: EstateVocabulary;
23
- export declare const ARCHITIZER_STYLES: EstateVocabulary;
24
- export declare const DESIGNROUND_STYLE_ANCHORS: EstateVocabulary;
25
- export declare const DESIGNSHOP_SCHEME_STYLES: EstateVocabulary;
80
+ export declare const RENDERING_SCENE_MOOD: EstateVocabulary;
81
+ export declare const RENDERING_INTENT_KEYWORDS: EstateVocabulary;
82
+ export declare const ARCHITECTURE_PROJECTS_STYLES: EstateVocabulary;
83
+ export declare const EDITORIAL_STYLE_ANCHORS: EstateVocabulary;
84
+ export declare const ROOM_SCHEME_STYLES: EstateVocabulary;
26
85
  /**
27
86
  * Scheme counts over the 1,922 schemes carrying at least one product. Bands, not counts, are what
28
87
  * gets published (see `Term.usage`); the raw figures live here because the decomposition test has
29
88
  * to weight by usage and cannot do that from a band.
30
89
  */
31
- export declare const DESIGNSHOP_SCHEME_STYLE_COUNTS: Readonly<Record<string, number>>;
32
- export declare const DESIGNSHOP_PRODUCT_STYLES: EstateVocabulary;
33
- export declare const MATERIALGRAPH_MS_STYLE: EstateVocabulary;
34
- export declare const MATERIALGRAPH_MS_MOOD: EstateVocabulary;
35
- export declare const MATERIALGRAPH_MS_CHARACTER: EstateVocabulary;
36
- export declare const SAMPLIZE_COLOUR_COLLECTIONS: EstateVocabulary;
90
+ export declare const ROOM_SCHEME_STYLE_COUNTS: Readonly<Record<string, number>>;
91
+ export declare const RETAIL_PRODUCT_STYLES: EstateVocabulary;
92
+ export declare const RETRIEVAL_MS_STYLE: EstateVocabulary;
93
+ export declare const RETRIEVAL_MS_MOOD: EstateVocabulary;
94
+ export declare const RETRIEVAL_MS_CHARACTER: EstateVocabulary;
95
+ export declare const PAINT_SAMPLE_COLOUR_COLLECTIONS: EstateVocabulary;
37
96
  /**
38
97
  * A standing fact, visible in this capture rather than asserted.
39
98
  *
40
- * SAMPLIZE IS A SAMPLING CHANNEL, NOT A PAINT BRAND. It prints peel-and-stick sheets of other
41
- * manufacturers' colours and manufactures nothing. Its own product index groups by maker, and every
42
- * maker is somebody else: the largest share of the catalogue sits in a `benjamin-moore` collection,
43
- * then `sherwin-williams`, then `behr`. If a query ever returns Samplize as the maker of a colour,
44
- * the query is wrong and this is the evidence.
99
+ * THE PAINT-SAMPLE RETAILER IS A SAMPLING CHANNEL, NOT A PAINT BRAND. It prints peel-and-stick
100
+ * sheets of other manufacturers' colours and manufactures nothing. Its own product index groups by
101
+ * maker, and every maker is somebody else: the largest share of the catalogue sits in a
102
+ * `benjamin-moore` collection, then `sherwin-williams`, then `behr`. If a query ever returns the
103
+ * retailer as the maker of a colour, the query is wrong and this is the evidence.
45
104
  */
46
- export declare const SAMPLIZE_MAKER_COLLECTIONS: readonly ["benjamin-moore", "sherwin-williams", "behr"];
105
+ export declare const PAINT_SAMPLE_MAKER_COLLECTIONS: readonly ["benjamin-moore", "sherwin-williams", "behr"];
47
106
  export declare const ESTATE_VOCABULARIES: readonly EstateVocabulary[];