@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/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { createHash } from "crypto";
4
4
  // src/dictionaries.ts
5
5
  var AUTHORED = {
6
6
  basis: "authored",
7
- source: "@instruments/taxonomy \u2014 MaterialGraph `role` decomposition, 2026-08-27"
7
+ source: "@instruments/taxonomy - decomposition of a role dictionary in a materials-retrieval system (src-05), 2026-08-27"
8
8
  };
9
9
  var MATERIAL_FAMILY_TERMS = [
10
10
  { label: "Paint", slug: "paint" },
@@ -86,7 +86,7 @@ var APPLICATION_TERMS = [
86
86
  { slug: "window", label: "Window" },
87
87
  { slug: "facade", label: "Facade" },
88
88
  {
89
- // MaterialGraph's `role.worksurface` is this term under the British name, and the crosswalk
89
+ // The role dictionary's `worksurface` is this term under the British name, and the crosswalk
90
90
  // resolves it here rather than minting a second term for one surface.
91
91
  altLabels: ["worksurface", "worktop"],
92
92
  slug: "countertop",
@@ -112,7 +112,7 @@ var APPLICATION_TERMS = [
112
112
  { slug: "ornamentation", label: "Ornamentation" },
113
113
  { slug: "aquatic-environments", label: "Aquatic Environments" },
114
114
  {
115
- // AUTHORED, from MaterialGraph `role.upholstery`. TOP-LEVEL AND NOT UNDER `furniture`, which is
115
+ // AUTHORED, from the role dictionary's `upholstery`. TOP-LEVEL AND NOT UNDER `furniture`, which is
116
116
  // where it first looks like it belongs: `wall_upholstered` is already a child of `wall`, so
117
117
  // upholstery is a use that crosses two zones of this axis and cannot sit inside either.
118
118
  // `furniture_seating` is the seat; this is the covering specified for it.
@@ -122,7 +122,7 @@ var APPLICATION_TERMS = [
122
122
  provenance: AUTHORED
123
123
  },
124
124
  {
125
- // AUTHORED, from MaterialGraph `role.trim`. The product-facing claim - this material may be
125
+ // AUTHORED, from the role dictionary's `trim`. The product-facing claim - this material may be
126
126
  // specified as trim - and not `element.skirting` and kin, which are the installed things.
127
127
  definition: "Specified as a linear edging, banding or moulding finishing a junction between surfaces.",
128
128
  slug: "trim",
@@ -333,8 +333,18 @@ var APPLICATION_TERMS = [
333
333
  }
334
334
  ];
335
335
 
336
+ // src/axes/axis.ts
337
+ var single = (slug, label, terms, governance) => [
338
+ {
339
+ ...governance === void 0 ? {} : { governance },
340
+ label,
341
+ slug,
342
+ terms
343
+ }
344
+ ];
345
+
336
346
  // src/axes/construction.ts
337
- var SOURCE = "DesignShop frozen estate construction vocabulary";
347
+ var SOURCE = "construction vocabulary in a furnishings retailer (src-03)";
338
348
  var SNAPSHOT = "2026-08-25";
339
349
  var term = (slug, label, definition) => ({
340
350
  definition,
@@ -430,6 +440,86 @@ var CONSTRUCTION_TERMS = [
430
440
  )
431
441
  ];
432
442
 
443
+ // src/axes/daylight.ts
444
+ var REVIEW_DATE = "2026-09-11";
445
+ var AUTHORED2 = {
446
+ basis: "authored",
447
+ source: "@instruments/taxonomy ADR 0006"
448
+ };
449
+ var EN_17037 = {
450
+ basis: "referenced",
451
+ snapshot: REVIEW_DATE,
452
+ source: "EN 17037:2018 Daylight in buildings"
453
+ };
454
+ var term2 = (provenance, slug, label, definition, extra = {}) => ({
455
+ definition,
456
+ introducedAt: REVIEW_DATE,
457
+ label,
458
+ provenance,
459
+ reviewedAt: REVIEW_DATE,
460
+ slug,
461
+ ...extra
462
+ });
463
+ var direction = (identifier, label) => ({
464
+ identifier,
465
+ label,
466
+ match: "related",
467
+ scheme: "wikidata"
468
+ });
469
+ var DAYLIGHT_ASPECT_TERMS = [
470
+ term2(
471
+ AUTHORED2,
472
+ "north-facing",
473
+ "North-facing",
474
+ "Principal windows face north. A compass fact only; what the sun does with it depends on hemisphere and is recorded under Light.",
475
+ { external: [direction("Q659", "north")] }
476
+ ),
477
+ term2(
478
+ AUTHORED2,
479
+ "south-facing",
480
+ "South-facing",
481
+ "Principal windows face south.",
482
+ { external: [direction("Q667", "south")] }
483
+ ),
484
+ term2(
485
+ AUTHORED2,
486
+ "east-facing",
487
+ "East-facing",
488
+ "Principal windows face east, so the room takes the morning end of the day.",
489
+ { external: [direction("Q684", "east")] }
490
+ ),
491
+ term2(
492
+ AUTHORED2,
493
+ "west-facing",
494
+ "West-facing",
495
+ "Principal windows face west, so the room takes the afternoon end of the day.",
496
+ { external: [direction("Q679", "west")] }
497
+ )
498
+ ];
499
+ var DAYLIGHT_LIGHT_TERMS = [
500
+ term2(
501
+ EN_17037,
502
+ "low",
503
+ "Low light",
504
+ "Daylight falls short of what the room's use wants; surfaces are seen by borrowed or artificial light for much of the day.",
505
+ { rank: 1 }
506
+ ),
507
+ term2(
508
+ EN_17037,
509
+ "moderate",
510
+ "Moderate light",
511
+ "Daylight sufficient for the room's use without being a feature of it.",
512
+ { rank: 2 }
513
+ ),
514
+ term2(
515
+ EN_17037,
516
+ "bright",
517
+ "Bright light",
518
+ "Daylight is the dominant condition; surfaces read in it for most of the day.",
519
+ { altLabels: ["high", "strong light", "well-lit"], rank: 3 }
520
+ )
521
+ ];
522
+
433
523
  // src/axes/element-shared.ts
434
524
  var aat = (slug, label, match) => ({
435
525
  identifier: slug,
@@ -443,7 +533,7 @@ var uniclass = (slug, label, match) => ({
443
533
  match,
444
534
  scheme: "uniclass"
445
535
  });
446
- var AUTHORED2 = {
536
+ var AUTHORED3 = {
447
537
  basis: "authored",
448
538
  source: "@instruments/taxonomy ADR 0001"
449
539
  };
@@ -471,7 +561,7 @@ var ELEMENT_FABRIC_TERMS = [
471
561
  ],
472
562
  label: "Wall",
473
563
  placement: "field",
474
- provenance: AUTHORED2,
564
+ provenance: AUTHORED3,
475
565
  slug: "wall"
476
566
  },
477
567
  {
@@ -484,7 +574,7 @@ var ELEMENT_FABRIC_TERMS = [
484
574
  ],
485
575
  label: "External Wall",
486
576
  placement: "field",
487
- provenance: AUTHORED2,
577
+ provenance: AUTHORED3,
488
578
  slug: "external-wall"
489
579
  },
490
580
  {
@@ -497,7 +587,7 @@ var ELEMENT_FABRIC_TERMS = [
497
587
  ],
498
588
  label: "Internal Wall",
499
589
  placement: "field",
500
- provenance: AUTHORED2,
590
+ provenance: AUTHORED3,
501
591
  slug: "internal-wall"
502
592
  },
503
593
  {
@@ -509,7 +599,7 @@ var ELEMENT_FABRIC_TERMS = [
509
599
  ],
510
600
  label: "Partition",
511
601
  placement: "field",
512
- provenance: AUTHORED2,
602
+ provenance: AUTHORED3,
513
603
  slug: "partition"
514
604
  },
515
605
  {
@@ -518,7 +608,7 @@ var ELEMENT_FABRIC_TERMS = [
518
608
  label: "Cladding",
519
609
  note: "No AAT mapping. AAT 300014860 `cladding` is the metal-coating process, a different thing entirely, and a plausible wrong mapping is worse than none.",
520
610
  placement: "field",
521
- provenance: AUTHORED2,
611
+ provenance: AUTHORED3,
522
612
  related: [partOf("external-wall")],
523
613
  slug: "cladding"
524
614
  },
@@ -529,7 +619,7 @@ var ELEMENT_FABRIC_TERMS = [
529
619
  label: "Panelling",
530
620
  note: "AAT's nearest term, `wainscoting`, is panelling carried only to dado height; this term covers full-height panelling too, so the AAT concept is narrower.",
531
621
  placement: "joinery",
532
- provenance: AUTHORED2,
622
+ provenance: AUTHORED3,
533
623
  related: [partOf(INTERNAL_WALL)],
534
624
  slug: "panelling"
535
625
  },
@@ -541,7 +631,7 @@ var ELEMENT_FABRIC_TERMS = [
541
631
  ],
542
632
  label: "Parapet",
543
633
  placement: "field",
544
- provenance: AUTHORED2,
634
+ provenance: AUTHORED3,
545
635
  related: [partOf("external-wall")],
546
636
  slug: "parapet"
547
637
  },
@@ -554,7 +644,7 @@ var ELEMENT_FABRIC_TERMS = [
554
644
  ],
555
645
  label: "Floor",
556
646
  placement: "underfoot",
557
- provenance: AUTHORED2,
647
+ provenance: AUTHORED3,
558
648
  slug: "floor"
559
649
  },
560
650
  {
@@ -562,7 +652,7 @@ var ELEMENT_FABRIC_TERMS = [
562
652
  external: [aat("300014866", "flooring", "close")],
563
653
  label: "Floor Finish",
564
654
  placement: "underfoot",
565
- provenance: AUTHORED2,
655
+ provenance: AUTHORED3,
566
656
  related: [partOf("floor")],
567
657
  slug: "floor-finish"
568
658
  },
@@ -576,7 +666,7 @@ var ELEMENT_FABRIC_TERMS = [
576
666
  ],
577
667
  label: "Raised Floor",
578
668
  placement: "underfoot",
579
- provenance: AUTHORED2,
669
+ provenance: AUTHORED3,
580
670
  slug: "raised-floor"
581
671
  },
582
672
  // ─── Ceilings ───────────────────────────────────────────────────────────────────────────────
@@ -588,7 +678,7 @@ var ELEMENT_FABRIC_TERMS = [
588
678
  ],
589
679
  label: "Ceiling",
590
680
  placement: "overhead",
591
- provenance: AUTHORED2,
681
+ provenance: AUTHORED3,
592
682
  slug: "ceiling"
593
683
  },
594
684
  {
@@ -601,7 +691,7 @@ var ELEMENT_FABRIC_TERMS = [
601
691
  ],
602
692
  label: "Suspended Ceiling",
603
693
  placement: "overhead",
604
- provenance: AUTHORED2,
694
+ provenance: AUTHORED3,
605
695
  slug: "suspended-ceiling"
606
696
  },
607
697
  {
@@ -612,7 +702,7 @@ var ELEMENT_FABRIC_TERMS = [
612
702
  ],
613
703
  label: "Soffit",
614
704
  placement: "overhead",
615
- provenance: AUTHORED2,
705
+ provenance: AUTHORED3,
616
706
  slug: "soffit"
617
707
  },
618
708
  // ─── Roofs ──────────────────────────────────────────────────────────────────────────────────
@@ -624,7 +714,7 @@ var ELEMENT_FABRIC_TERMS = [
624
714
  ],
625
715
  label: "Roof",
626
716
  placement: "overhead",
627
- provenance: AUTHORED2,
717
+ provenance: AUTHORED3,
628
718
  slug: "roof"
629
719
  },
630
720
  {
@@ -636,7 +726,7 @@ var ELEMENT_FABRIC_TERMS = [
636
726
  ],
637
727
  label: "Flat Roof",
638
728
  placement: "overhead",
639
- provenance: AUTHORED2,
729
+ provenance: AUTHORED3,
640
730
  slug: "flat-roof"
641
731
  },
642
732
  {
@@ -648,7 +738,7 @@ var ELEMENT_FABRIC_TERMS = [
648
738
  ],
649
739
  label: "Pitched Roof",
650
740
  placement: "overhead",
651
- provenance: AUTHORED2,
741
+ provenance: AUTHORED3,
652
742
  slug: "pitched-roof"
653
743
  },
654
744
  {
@@ -657,7 +747,7 @@ var ELEMENT_FABRIC_TERMS = [
657
747
  external: [aat("300003062", "skylights", "exact")],
658
748
  label: "Rooflight",
659
749
  placement: "unpainted",
660
- provenance: AUTHORED2,
750
+ provenance: AUTHORED3,
661
751
  related: [partOf(ROOF)],
662
752
  slug: "rooflight"
663
753
  },
@@ -670,7 +760,7 @@ var ELEMENT_FABRIC_TERMS = [
670
760
  ],
671
761
  label: "Door",
672
762
  placement: "joinery",
673
- provenance: AUTHORED2,
763
+ provenance: AUTHORED3,
674
764
  slug: "door"
675
765
  },
676
766
  {
@@ -681,7 +771,7 @@ var ELEMENT_FABRIC_TERMS = [
681
771
  ],
682
772
  label: "Window",
683
773
  placement: "trim",
684
- provenance: AUTHORED2,
774
+ provenance: AUTHORED3,
685
775
  slug: "window"
686
776
  },
687
777
  {
@@ -689,7 +779,7 @@ var ELEMENT_FABRIC_TERMS = [
689
779
  label: "Glazing",
690
780
  note: "No AAT mapping. AAT carries `glazing` only as processes and `glass` only as a material, and neither of those is this element.",
691
781
  placement: "unpainted",
692
- provenance: AUTHORED2,
782
+ provenance: AUTHORED3,
693
783
  related: [partOf(WINDOW), partOf("curtain-walling")],
694
784
  slug: "glazing"
695
785
  },
@@ -703,7 +793,7 @@ var ELEMENT_FABRIC_TERMS = [
703
793
  ],
704
794
  label: "Curtain Walling",
705
795
  placement: "unpainted",
706
- provenance: AUTHORED2,
796
+ provenance: AUTHORED3,
707
797
  slug: "curtain-walling"
708
798
  },
709
799
  {
@@ -712,7 +802,7 @@ var ELEMENT_FABRIC_TERMS = [
712
802
  external: [aat("300003173", "shutters (opening covers)", "exact")],
713
803
  label: "Shutter",
714
804
  placement: "trim",
715
- provenance: AUTHORED2,
805
+ provenance: AUTHORED3,
716
806
  related: [partOf(WINDOW)],
717
807
  slug: "shutter"
718
808
  },
@@ -725,7 +815,7 @@ var ELEMENT_FABRIC_TERMS = [
725
815
  ],
726
816
  label: "Ironmongery",
727
817
  placement: "unpainted",
728
- provenance: AUTHORED2,
818
+ provenance: AUTHORED3,
729
819
  related: [partOf(DOOR), partOf(WINDOW)],
730
820
  slug: "ironmongery"
731
821
  },
@@ -740,7 +830,7 @@ var ELEMENT_FABRIC_TERMS = [
740
830
  ],
741
831
  label: "Stair",
742
832
  placement: "underfoot",
743
- provenance: AUTHORED2,
833
+ provenance: AUTHORED3,
744
834
  slug: "stair"
745
835
  },
746
836
  {
@@ -748,7 +838,7 @@ var ELEMENT_FABRIC_TERMS = [
748
838
  external: [aat("300003326", "treads", "exact")],
749
839
  label: "Stair Tread",
750
840
  placement: "underfoot",
751
- provenance: AUTHORED2,
841
+ provenance: AUTHORED3,
752
842
  related: [partOf(STAIR)],
753
843
  slug: "stair-tread"
754
844
  },
@@ -757,7 +847,7 @@ var ELEMENT_FABRIC_TERMS = [
757
847
  external: [aat("300003325", "risers (step components)", "exact")],
758
848
  label: "Stair Riser",
759
849
  placement: "underfoot",
760
- provenance: AUTHORED2,
850
+ provenance: AUTHORED3,
761
851
  related: [partOf(STAIR)],
762
852
  slug: "stair-riser"
763
853
  },
@@ -771,7 +861,7 @@ var ELEMENT_FABRIC_TERMS = [
771
861
  ],
772
862
  label: "Balustrade",
773
863
  placement: "trim",
774
- provenance: AUTHORED2,
864
+ provenance: AUTHORED3,
775
865
  related: [partOf(STAIR)],
776
866
  slug: "balustrade"
777
867
  },
@@ -780,7 +870,7 @@ var ELEMENT_FABRIC_TERMS = [
780
870
  external: [aat("300002022", "handrails", "exact")],
781
871
  label: "Handrail",
782
872
  placement: "trim",
783
- provenance: AUTHORED2,
873
+ provenance: AUTHORED3,
784
874
  related: [partOf(BALUSTRADE)],
785
875
  slug: "handrail"
786
876
  },
@@ -790,7 +880,7 @@ var ELEMENT_FABRIC_TERMS = [
790
880
  external: [aat("300003296", "newels", "exact")],
791
881
  label: "Newel",
792
882
  placement: "trim",
793
- provenance: AUTHORED2,
883
+ provenance: AUTHORED3,
794
884
  related: [partOf(BALUSTRADE)],
795
885
  slug: "newel"
796
886
  }
@@ -808,7 +898,7 @@ var ELEMENT_FITOUT_TERMS = [
808
898
  ],
809
899
  label: "Millwork",
810
900
  placement: "joinery",
811
- provenance: AUTHORED2,
901
+ provenance: AUTHORED3,
812
902
  slug: "millwork"
813
903
  },
814
904
  {
@@ -822,7 +912,7 @@ var ELEMENT_FITOUT_TERMS = [
822
912
  ],
823
913
  label: "Cabinetry",
824
914
  placement: "joinery",
825
- provenance: AUTHORED2,
915
+ provenance: AUTHORED3,
826
916
  slug: "cabinetry"
827
917
  },
828
918
  {
@@ -831,7 +921,7 @@ var ELEMENT_FITOUT_TERMS = [
831
921
  external: [aat("300375691", "countertops", "exact")],
832
922
  label: "Worktop",
833
923
  placement: "joinery",
834
- provenance: AUTHORED2,
924
+ provenance: AUTHORED3,
835
925
  related: [partOf("cabinetry")],
836
926
  slug: "worktop"
837
927
  },
@@ -843,7 +933,7 @@ var ELEMENT_FITOUT_TERMS = [
843
933
  ],
844
934
  label: "Shelving",
845
935
  placement: "joinery",
846
- provenance: AUTHORED2,
936
+ provenance: AUTHORED3,
847
937
  slug: "shelving"
848
938
  },
849
939
  {
@@ -854,7 +944,7 @@ var ELEMENT_FITOUT_TERMS = [
854
944
  label: "Wardrobe",
855
945
  note: "AAT splits `wardrobes` into a room sense and a loose-furniture sense, and a fitted wardrobe is neither, so the broader `built-in furniture` is carried instead.",
856
946
  placement: "joinery",
857
- provenance: AUTHORED2,
947
+ provenance: AUTHORED3,
858
948
  slug: "wardrobe"
859
949
  },
860
950
  // ─── Visible services ───────────────────────────────────────────────────────────────────────
@@ -867,7 +957,7 @@ var ELEMENT_FITOUT_TERMS = [
867
957
  label: "Radiator",
868
958
  note: "The Uniclass match is `related`, not `broad`: EF_60_40_37 is the heating FUNCTION, and a radiator is not a kind of function.",
869
959
  placement: "field",
870
- provenance: AUTHORED2,
960
+ provenance: AUTHORED3,
871
961
  slug: "radiator"
872
962
  },
873
963
  {
@@ -879,7 +969,7 @@ var ELEMENT_FITOUT_TERMS = [
879
969
  ],
880
970
  label: "Luminaire",
881
971
  placement: "unpainted",
882
- provenance: AUTHORED2,
972
+ provenance: AUTHORED3,
883
973
  slug: "luminaire"
884
974
  },
885
975
  {
@@ -888,7 +978,7 @@ var ELEMENT_FITOUT_TERMS = [
888
978
  external: [aat("300052575", "plumbing fixtures", "close")],
889
979
  label: "Sanitaryware",
890
980
  placement: "unpainted",
891
- provenance: AUTHORED2,
981
+ provenance: AUTHORED3,
892
982
  slug: "sanitaryware"
893
983
  },
894
984
  {
@@ -900,7 +990,7 @@ var ELEMENT_FITOUT_TERMS = [
900
990
  ],
901
991
  label: "Tapware",
902
992
  placement: "unpainted",
903
- provenance: AUTHORED2,
993
+ provenance: AUTHORED3,
904
994
  related: [partOf("sanitaryware")],
905
995
  slug: "tapware"
906
996
  },
@@ -913,7 +1003,7 @@ var ELEMENT_FITOUT_TERMS = [
913
1003
  ],
914
1004
  label: "Socket & Switch",
915
1005
  placement: "unpainted",
916
- provenance: AUTHORED2,
1006
+ provenance: AUTHORED3,
917
1007
  slug: "socket-outlet"
918
1008
  },
919
1009
  // ─── Trim and thresholds ────────────────────────────────────────────────────────────────────
@@ -923,7 +1013,7 @@ var ELEMENT_FITOUT_TERMS = [
923
1013
  external: [aat("300002681", "baseboards", "exact")],
924
1014
  label: "Skirting",
925
1015
  placement: "trim",
926
- provenance: AUTHORED2,
1016
+ provenance: AUTHORED3,
927
1017
  related: [partOf(INTERNAL_WALL)],
928
1018
  slug: "skirting"
929
1019
  },
@@ -934,7 +1024,7 @@ var ELEMENT_FITOUT_TERMS = [
934
1024
  label: "Architrave",
935
1025
  note: "AAT 300001780 `architraves (entablature)` is the classical member and not this term, despite the shared word; the broader `moldings` concept is carried instead.",
936
1026
  placement: "trim",
937
- provenance: AUTHORED2,
1027
+ provenance: AUTHORED3,
938
1028
  related: [partOf(DOOR)],
939
1029
  slug: "architrave"
940
1030
  },
@@ -944,7 +1034,7 @@ var ELEMENT_FITOUT_TERMS = [
944
1034
  external: [aat("300001788", "cornices", "exact")],
945
1035
  label: "Cornice",
946
1036
  placement: "overhead",
947
- provenance: AUTHORED2,
1037
+ provenance: AUTHORED3,
948
1038
  related: [partOf(INTERNAL_WALL)],
949
1039
  slug: "cornice"
950
1040
  },
@@ -954,7 +1044,7 @@ var ELEMENT_FITOUT_TERMS = [
954
1044
  external: [aat("300002684", "chair rails", "exact")],
955
1045
  label: "Dado Rail",
956
1046
  placement: "trim",
957
- provenance: AUTHORED2,
1047
+ provenance: AUTHORED3,
958
1048
  related: [partOf(INTERNAL_WALL)],
959
1049
  slug: "dado-rail"
960
1050
  },
@@ -963,7 +1053,7 @@ var ELEMENT_FITOUT_TERMS = [
963
1053
  external: [aat("300002687", "picture rails", "exact")],
964
1054
  label: "Picture Rail",
965
1055
  placement: "trim",
966
- provenance: AUTHORED2,
1056
+ provenance: AUTHORED3,
967
1057
  related: [partOf(INTERNAL_WALL)],
968
1058
  slug: "picture-rail"
969
1059
  },
@@ -978,7 +1068,7 @@ var ELEMENT_FITOUT_TERMS = [
978
1068
  label: "Column",
979
1069
  note: "The Uniclass match is `related`: a column is a component of a framed structure, not a kind of one. The same holds for `beam` and `truss`.",
980
1070
  placement: "field",
981
- provenance: AUTHORED2,
1071
+ provenance: AUTHORED3,
982
1072
  slug: "column"
983
1073
  },
984
1074
  {
@@ -990,7 +1080,7 @@ var ELEMENT_FITOUT_TERMS = [
990
1080
  ],
991
1081
  label: "Beam",
992
1082
  placement: "overhead",
993
- provenance: AUTHORED2,
1083
+ provenance: AUTHORED3,
994
1084
  slug: "beam"
995
1085
  },
996
1086
  {
@@ -1001,7 +1091,7 @@ var ELEMENT_FITOUT_TERMS = [
1001
1091
  ],
1002
1092
  label: "Truss",
1003
1093
  placement: "overhead",
1004
- provenance: AUTHORED2,
1094
+ provenance: AUTHORED3,
1005
1095
  related: [partOf(ROOF)],
1006
1096
  slug: "truss"
1007
1097
  },
@@ -1011,7 +1101,7 @@ var ELEMENT_FITOUT_TERMS = [
1011
1101
  external: [aat("300052267", "fireplaces", "exact")],
1012
1102
  label: "Fireplace",
1013
1103
  placement: "joinery",
1014
- provenance: AUTHORED2,
1104
+ provenance: AUTHORED3,
1015
1105
  slug: "fireplace"
1016
1106
  },
1017
1107
  {
@@ -1020,7 +1110,7 @@ var ELEMENT_FITOUT_TERMS = [
1020
1110
  external: [aat("300052347", "mantels (fireplace components)", "exact")],
1021
1111
  label: "Chimneypiece",
1022
1112
  placement: "joinery",
1023
- provenance: AUTHORED2,
1113
+ provenance: AUTHORED3,
1024
1114
  related: [partOf("fireplace")],
1025
1115
  slug: "chimneypiece"
1026
1116
  }
@@ -1032,8 +1122,8 @@ var ELEMENT_TERMS = [
1032
1122
  ...ELEMENT_FITOUT_TERMS
1033
1123
  ];
1034
1124
 
1035
- // src/materialgraph-crossover-sources.ts
1036
- var MATERIALGRAPH_CROSSOVER_SOURCE = "materialgraph@b55d7ad33807d9653bd4838b7908fb1d100440a8:packages/products/src/search/colour-material-lexicon.ts:46-102";
1125
+ // src/crossover-sources.ts
1126
+ var RETRIEVAL_LEXICON_SOURCE = "colour-material lexicon in a materials-retrieval system (src-05)";
1037
1127
  var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@c0662caabe7cd8604241a8a7b2608fa5bc71de51:packages/core/data/reference/v1/taxonomy.json";
1038
1128
  var BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
1039
1129
  var BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
@@ -1085,19 +1175,19 @@ var CROSSOVER_DEFINITION_SOURCES = {
1085
1175
  wood: WOOD_HANDBOOK_SOURCE,
1086
1176
  wool: FAO_NATURAL_FIBRES_SOURCE
1087
1177
  };
1088
- var crossoverSource = (phrase) => `${MATERIALGRAPH_CROSSOVER_SOURCE}; ${CROSSOVER_DEFINITION_SOURCES[phrase]}; ${COLORSCOPE_CROSSOVER_SOURCE}`;
1178
+ var crossoverSource = (phrase) => `${RETRIEVAL_LEXICON_SOURCE}; ${CROSSOVER_DEFINITION_SOURCES[phrase]}; ${COLORSCOPE_CROSSOVER_SOURCE}`;
1089
1179
 
1090
1180
  // src/axes/finish.ts
1091
- var ESTATE = "DesignShop frozen estate finish vocabulary";
1181
+ var ESTATE = "finish vocabulary in a furnishings retailer (src-03)";
1092
1182
  var ESTATE_SNAPSHOT = "2026-08-25";
1093
1183
  var CROSSOVER_SNAPSHOT = "2026-08-30";
1094
- var MG_SHEEN = "materialgraph ms_sheen";
1095
- var MG_TEXTURE = "materialgraph ms_texture";
1096
- var MG_SNAPSHOT = "2026-08-27";
1097
- var CORPUS = "Material Bank catalogue, surface_texture column";
1184
+ var RETRIEVAL_SHEEN = "ms_sheen, a sheen dictionary in a materials-retrieval system (src-05)";
1185
+ var RETRIEVAL_TEXTURE = "ms_texture, a texture dictionary in a materials-retrieval system (src-05)";
1186
+ var RETRIEVAL_SNAPSHOT = "2026-08-27";
1187
+ var CORPUS = "the surface_texture column in a materials-marketplace catalogue (src-04)";
1098
1188
  var CORPUS_SNAPSHOT = "2026-08-27";
1099
1189
  var DROPPED = "Restored 2026-08-27. Dropped in normalisation.";
1100
- var term2 = (slug, label, definition) => ({
1190
+ var term3 = (slug, label, definition) => ({
1101
1191
  definition,
1102
1192
  label,
1103
1193
  provenance: { basis: "evidenced", snapshot: ESTATE_SNAPSHOT, source: ESTATE },
@@ -1106,7 +1196,7 @@ var term2 = (slug, label, definition) => ({
1106
1196
  var vendored = (source, slug, label, definition, rank) => ({
1107
1197
  definition,
1108
1198
  label,
1109
- provenance: { basis: "vendored", snapshot: MG_SNAPSHOT, source },
1199
+ provenance: { basis: "vendored", snapshot: RETRIEVAL_SNAPSHOT, source },
1110
1200
  slug,
1111
1201
  ...rank === void 0 ? {} : { rank }
1112
1202
  });
@@ -1139,13 +1229,13 @@ var FINISH_TREATMENT_TERMS = [
1139
1229
  },
1140
1230
  slug: "chrome"
1141
1231
  },
1142
- term2("glazed", "Glazed", "Covered by a fused vitreous surface layer."),
1143
- term2(
1232
+ term3("glazed", "Glazed", "Covered by a fused vitreous surface layer."),
1233
+ term3(
1144
1234
  "honed",
1145
1235
  "Honed",
1146
1236
  "Ground to a smooth, low-sheen surface without polishing to gloss."
1147
1237
  ),
1148
- term2(
1238
+ term3(
1149
1239
  "natural",
1150
1240
  "Natural",
1151
1241
  "Left close to the material's formed or worked state without an appearance-changing top finish."
@@ -1160,7 +1250,7 @@ var FINISH_TREATMENT_TERMS = [
1160
1250
  },
1161
1251
  slug: "nickel"
1162
1252
  },
1163
- term2(
1253
+ term3(
1164
1254
  "polished",
1165
1255
  "Polished",
1166
1256
  "Mechanically refined to a smooth, reflective surface."
@@ -1168,49 +1258,49 @@ var FINISH_TREATMENT_TERMS = [
1168
1258
  ];
1169
1259
  var FINISH_SHEEN_TERMS = [
1170
1260
  vendored(
1171
- MG_SHEEN,
1261
+ RETRIEVAL_SHEEN,
1172
1262
  "dead-matte",
1173
1263
  "Dead matte",
1174
1264
  "Reflects almost nothing; no visible sheen at any angle.",
1175
1265
  1
1176
1266
  ),
1177
1267
  vendored(
1178
- MG_SHEEN,
1268
+ RETRIEVAL_SHEEN,
1179
1269
  "matte",
1180
1270
  "Matte",
1181
1271
  "Low-sheen, with diffuse rather than specular reflection.",
1182
1272
  2
1183
1273
  ),
1184
1274
  vendored(
1185
- MG_SHEEN,
1275
+ RETRIEVAL_SHEEN,
1186
1276
  "eggshell",
1187
1277
  "Eggshell",
1188
1278
  "A trace of sheen, visible only at a glancing angle.",
1189
1279
  3
1190
1280
  ),
1191
1281
  vendored(
1192
- MG_SHEEN,
1282
+ RETRIEVAL_SHEEN,
1193
1283
  "soft-lustre",
1194
1284
  "Soft lustre",
1195
1285
  "A gentle, low-contrast sheen across the surface.",
1196
1286
  4
1197
1287
  ),
1198
1288
  vendored(
1199
- MG_SHEEN,
1289
+ RETRIEVAL_SHEEN,
1200
1290
  "satin",
1201
1291
  "Satin",
1202
1292
  "An even mid sheen, softer than semi-gloss and clearly not matte.",
1203
1293
  5
1204
1294
  ),
1205
1295
  vendored(
1206
- MG_SHEEN,
1296
+ RETRIEVAL_SHEEN,
1207
1297
  "semi-gloss",
1208
1298
  "Semi-gloss",
1209
1299
  "Strongly reflective while still scattering the highlight.",
1210
1300
  6
1211
1301
  ),
1212
1302
  vendored(
1213
- MG_SHEEN,
1303
+ RETRIEVAL_SHEEN,
1214
1304
  "high-gloss",
1215
1305
  "High gloss",
1216
1306
  "Returns a sharp, mirror-like specular reflection.",
@@ -1219,7 +1309,7 @@ var FINISH_SHEEN_TERMS = [
1219
1309
  ];
1220
1310
  var FINISH_TEXTURE_TERMS = [
1221
1311
  vendored(
1222
- MG_TEXTURE,
1312
+ RETRIEVAL_TEXTURE,
1223
1313
  "flat",
1224
1314
  "Flat",
1225
1315
  "No perceptible relief; the surface reads as a single plane."
@@ -1231,33 +1321,38 @@ var FINISH_TEXTURE_TERMS = [
1231
1321
  "dominant",
1232
1322
  "Restored 2026-08-27. The most frequent value in the source column, and absent from the normalisation that consumed it."
1233
1323
  ),
1234
- vendored(MG_TEXTURE, "fine", "Fine", "A shallow, close-grained tooth."),
1235
1324
  vendored(
1236
- MG_TEXTURE,
1325
+ RETRIEVAL_TEXTURE,
1326
+ "fine",
1327
+ "Fine",
1328
+ "A shallow, close-grained tooth."
1329
+ ),
1330
+ vendored(
1331
+ RETRIEVAL_TEXTURE,
1237
1332
  "brushed",
1238
1333
  "Brushed",
1239
1334
  "Directional marks left by abrading along one axis."
1240
1335
  ),
1241
1336
  vendored(
1242
- MG_TEXTURE,
1337
+ RETRIEVAL_TEXTURE,
1243
1338
  "grained",
1244
1339
  "Grained",
1245
1340
  "Reads with the material's own fibre or bedding."
1246
1341
  ),
1247
1342
  vendored(
1248
- MG_TEXTURE,
1343
+ RETRIEVAL_TEXTURE,
1249
1344
  "woven",
1250
1345
  "Woven",
1251
1346
  "Surface relief produced by interlaced structure."
1252
1347
  ),
1253
1348
  vendored(
1254
- MG_TEXTURE,
1349
+ RETRIEVAL_TEXTURE,
1255
1350
  "napped",
1256
1351
  "Napped",
1257
1352
  "A raised pile that shades differently with direction."
1258
1353
  ),
1259
1354
  vendored(
1260
- MG_TEXTURE,
1355
+ RETRIEVAL_TEXTURE,
1261
1356
  "ribbed",
1262
1357
  "Ribbed",
1263
1358
  "Regular parallel relief across the surface."
@@ -1284,13 +1379,13 @@ var FINISH_TEXTURE_TERMS = [
1284
1379
  DROPPED
1285
1380
  ),
1286
1381
  vendored(
1287
- MG_TEXTURE,
1382
+ RETRIEVAL_TEXTURE,
1288
1383
  "hand-worked",
1289
1384
  "Hand-worked",
1290
1385
  "Irregular relief left by hand tooling."
1291
1386
  ),
1292
1387
  vendored(
1293
- MG_TEXTURE,
1388
+ RETRIEVAL_TEXTURE,
1294
1389
  "heavily-reliefed",
1295
1390
  "Heavily reliefed",
1296
1391
  "Deep, strongly modelled relief."
@@ -1303,22 +1398,20 @@ var FINISH_TERMS = [
1303
1398
  ];
1304
1399
 
1305
1400
  // src/search-corpus-source.ts
1306
- var MATERIALGRAPH_SEARCH_CORPUS_COMMIT = "53df40868bfb09bfe69bc66c455c051e34005ae1";
1307
- var MATERIALGRAPH_SEARCH_CORPUS_PATH = "packages/products/src/benchmark/fixtures/benchmark-cases-2026-07-31.1.json";
1308
- var MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT = "2026-07-31";
1309
- var MATERIALGRAPH_SEARCH_CORPUS = `materialgraph@${MATERIALGRAPH_SEARCH_CORPUS_COMMIT}:${MATERIALGRAPH_SEARCH_CORPUS_PATH}`;
1310
- var searchCorpusEvidence = (phrases) => `${MATERIALGRAPH_SEARCH_CORPUS} (244-query external search corpus; phrase and admission evidence: ${phrases}; canonical boundary authored by Taxonomy)`;
1401
+ var SEARCH_CORPUS_SNAPSHOT = "2026-07-31";
1402
+ var SEARCH_CORPUS = "a search benchmark in a materials-retrieval system (src-05)";
1403
+ var searchCorpusEvidence = (phrases) => `${SEARCH_CORPUS} (244-query external search corpus; phrase and admission evidence: ${phrases}; canonical boundary authored by Taxonomy)`;
1311
1404
 
1312
1405
  // src/axes/format.ts
1313
- var SOURCE2 = "DesignShop frozen estate format vocabulary";
1406
+ var SOURCE2 = "format vocabulary in a furnishings retailer (src-03)";
1314
1407
  var SNAPSHOT2 = "2026-08-25";
1315
1408
  var SEARCH_REVIEW_DATE = "2026-08-31";
1316
1409
  var searchCorpusProvenance = (evidence) => ({
1317
1410
  basis: "evidenced",
1318
- snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
1411
+ snapshot: SEARCH_CORPUS_SNAPSHOT,
1319
1412
  source: searchCorpusEvidence(evidence)
1320
1413
  });
1321
- var term3 = (slug, label, definition, extra = {}) => ({
1414
+ var term4 = (slug, label, definition, extra = {}) => ({
1322
1415
  definition,
1323
1416
  label,
1324
1417
  provenance: { basis: "evidenced", snapshot: SNAPSHOT2, source: SOURCE2 },
@@ -1326,28 +1419,28 @@ var term3 = (slug, label, definition, extra = {}) => ({
1326
1419
  ...extra
1327
1420
  });
1328
1421
  var FORMAT_TERMS = [
1329
- term3("area-rug", "Area rug", "A bounded loose-laid textile floor covering."),
1330
- term3(
1422
+ term4("area-rug", "Area rug", "A bounded loose-laid textile floor covering."),
1423
+ term4(
1331
1424
  "hide",
1332
1425
  "Hide",
1333
1426
  "A whole or hide-shaped supplied piece rather than a roll or modular unit."
1334
1427
  ),
1335
- term3(
1428
+ term4(
1336
1429
  "liquid",
1337
1430
  "Liquid",
1338
1431
  "Supplied wet and formed into its finished surface in place."
1339
1432
  ),
1340
- term3(
1433
+ term4(
1341
1434
  "modular",
1342
1435
  "Modular",
1343
1436
  "Supplied as repeatable units intended for interchangeable installation."
1344
1437
  ),
1345
- term3(
1438
+ term4(
1346
1439
  "mural",
1347
1440
  "Mural",
1348
1441
  "Supplied as a multi-panel image composed into one continuous scene."
1349
1442
  ),
1350
- term3(
1443
+ term4(
1351
1444
  "mosaic",
1352
1445
  "Mosaic",
1353
1446
  "Supplied as small pieces assembled or mounted together to install as one composed field, independent of material and visible motif.",
@@ -1357,28 +1450,28 @@ var FORMAT_TERMS = [
1357
1450
  reviewedAt: SEARCH_REVIEW_DATE
1358
1451
  }
1359
1452
  ),
1360
- term3(
1453
+ term4(
1361
1454
  "panel",
1362
1455
  "Panel",
1363
1456
  "A broad rigid or semi-rigid sheet installed as a discrete unit."
1364
1457
  ),
1365
- term3(
1458
+ term4(
1366
1459
  "plank",
1367
1460
  "Plank",
1368
1461
  "An elongated rigid unit whose length is materially greater than its width."
1369
1462
  ),
1370
- term3(
1463
+ term4(
1371
1464
  "roll",
1372
1465
  "Roll",
1373
1466
  "A flexible continuous sheet supplied wound around a core."
1374
1467
  ),
1375
- term3(
1468
+ term4(
1376
1469
  "slab",
1377
1470
  "Slab",
1378
1471
  "A large rigid sheet intended to minimise joints or be fabricated to shape."
1379
1472
  ),
1380
- term3("tile", "Tile", "A discrete modular surface unit."),
1381
- term3(
1473
+ term4("tile", "Tile", "A discrete modular surface unit."),
1474
+ term4(
1382
1475
  "penny-round",
1383
1476
  "Penny round",
1384
1477
  "A legacy fused identity for a small circular tile supplied for installation as a field.",
@@ -1393,7 +1486,7 @@ var FORMAT_TERMS = [
1393
1486
  supersededByReference: "format.tile"
1394
1487
  }
1395
1488
  ),
1396
- term3(
1489
+ term4(
1397
1490
  "veneer",
1398
1491
  "Veneer",
1399
1492
  "A thin facing layer supplied to be bonded or fixed to a substrate, independent of the material from which the facing is made.",
@@ -1403,7 +1496,7 @@ var FORMAT_TERMS = [
1403
1496
  reviewedAt: SEARCH_REVIEW_DATE
1404
1497
  }
1405
1498
  ),
1406
- term3(
1499
+ term4(
1407
1500
  "wide-plank",
1408
1501
  "Wide plank",
1409
1502
  "A plank intentionally wider than conventional strip flooring."
@@ -1411,95 +1504,95 @@ var FORMAT_TERMS = [
1411
1504
  ];
1412
1505
 
1413
1506
  // src/axes/installation-layout.ts
1414
- var REVIEW_DATE = "2026-08-31";
1507
+ var REVIEW_DATE2 = "2026-08-31";
1415
1508
  var REVIEW_SOURCE = "@instruments/taxonomy TAX-45 reviewed implementation contract";
1416
- var ZIGZAG_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; MaterialGraph herringbone and chevron product-language audit at 53df40868bfb09bfe69bc66c455c051e34005ae1:packages/products/src/search/eval/pattern-fidelity.ts";
1417
- var term4 = (slug, label, definition, extra = {}) => ({
1509
+ var ZIGZAG_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
1510
+ var term5 = (slug, label, definition, extra = {}) => ({
1418
1511
  definition,
1419
- introducedAt: REVIEW_DATE,
1512
+ introducedAt: REVIEW_DATE2,
1420
1513
  label,
1421
1514
  provenance: { basis: "authored", source: REVIEW_SOURCE },
1422
- reviewedAt: REVIEW_DATE,
1515
+ reviewedAt: REVIEW_DATE2,
1423
1516
  slug,
1424
1517
  ...extra
1425
1518
  });
1426
1519
  var INSTALLATION_LAYOUT_TERMS = [
1427
- term4(
1520
+ term5(
1428
1521
  "stack-bond",
1429
1522
  "Stack bond",
1430
1523
  "Equal units align in straight rows and columns with joints continuing across both directions."
1431
1524
  ),
1432
- term4(
1525
+ term5(
1433
1526
  "running-bond",
1434
1527
  "Running bond",
1435
1528
  "Successive courses are displaced along the units' long direction without asserting an exact offset fraction."
1436
1529
  ),
1437
- term4(
1530
+ term5(
1438
1531
  "offset-grid",
1439
1532
  "Offset grid",
1440
1533
  "Units occupy a repeated grid whose adjacent rows or columns are displaced, without the directional course identity of running bond."
1441
1534
  ),
1442
- term4(
1535
+ term5(
1443
1536
  "herringbone",
1444
1537
  "Herringbone layout",
1445
1538
  "Elongated units meet at alternating right or oblique angles to form staggered broken zigzags.",
1446
1539
  {
1447
1540
  provenance: {
1448
1541
  basis: "referenced",
1449
- snapshot: REVIEW_DATE,
1542
+ snapshot: REVIEW_DATE2,
1450
1543
  source: ZIGZAG_EVIDENCE_SOURCE
1451
1544
  }
1452
1545
  }
1453
1546
  ),
1454
- term4(
1547
+ term5(
1455
1548
  "chevron",
1456
1549
  "Chevron layout",
1457
1550
  "Units meet at mitred or shaped ends to form continuous aligned V-shaped zigzags; it does not require one V-shaped physical unit.",
1458
1551
  {
1459
1552
  provenance: {
1460
1553
  basis: "referenced",
1461
- snapshot: REVIEW_DATE,
1554
+ snapshot: REVIEW_DATE2,
1462
1555
  source: ZIGZAG_EVIDENCE_SOURCE
1463
1556
  }
1464
1557
  }
1465
1558
  ),
1466
- term4(
1559
+ term5(
1467
1560
  "basketweave",
1468
1561
  "Basketweave",
1469
1562
  "Small parallel groups alternate direction to produce an interlaced block arrangement."
1470
1563
  ),
1471
- term4(
1564
+ term5(
1472
1565
  "pinwheel",
1473
1566
  "Pinwheel",
1474
1567
  "Units rotate around repeated centres, commonly with a smaller central unit."
1475
1568
  ),
1476
- term4(
1569
+ term5(
1477
1570
  "multi-size-modular",
1478
1571
  "Multi-size modular",
1479
1572
  "Two or more unit sizes repeat as one governed modular installation sequence."
1480
1573
  ),
1481
- term4(
1574
+ term5(
1482
1575
  "ashlar",
1483
1576
  "Ashlar",
1484
1577
  "Rectangular units of varied lengths or sizes form coursed horizontal joints with controlled vertical-joint displacement."
1485
1578
  ),
1486
- term4(
1579
+ term5(
1487
1580
  "random-stagger",
1488
1581
  "Random stagger",
1489
1582
  "Elongated units form courses whose end joints vary without a stable repeating offset."
1490
1583
  ),
1491
- term4(
1584
+ term5(
1492
1585
  "radial",
1493
1586
  "Radial layout",
1494
1587
  "Units or real joints are persistently arranged around a centre or along radiating paths.",
1495
1588
  { altLabels: ["Fan"] }
1496
1589
  ),
1497
- term4(
1590
+ term5(
1498
1591
  "periodic-multi-shape",
1499
1592
  "Periodic multi-shape",
1500
1593
  "Two or more physical unit shapes recur in one stable repeating assembly."
1501
1594
  ),
1502
- term4(
1595
+ term5(
1503
1596
  "irregular-field",
1504
1597
  "Irregular field",
1505
1598
  "Discrete units form a positively observed non-periodic field with persistent real joints."
@@ -1507,14 +1600,14 @@ var INSTALLATION_LAYOUT_TERMS = [
1507
1600
  ];
1508
1601
 
1509
1602
  // src/axes/material.ts
1510
- var SOURCE3 = "DesignShop frozen estate and Material Instruments material vocabularies";
1603
+ var SOURCE3 = "material vocabularies in a furnishings retailer (src-03) and in-house";
1511
1604
  var SNAPSHOT3 = "2026-08-25";
1512
1605
  var CROSSOVER_SNAPSHOT2 = "2026-08-30";
1513
1606
  var NATURAL_FIBRE_SLUG = "natural-fibre";
1514
1607
  var STONE_SLUG = "stone";
1515
1608
  var STONE_TARGET = "material.stone";
1516
1609
  var WOOD_TARGET = "material.wood";
1517
- var term5 = (slug, label, definition) => ({
1610
+ var term6 = (slug, label, definition) => ({
1518
1611
  definition,
1519
1612
  label,
1520
1613
  provenance: { basis: "evidenced", snapshot: SNAPSHOT3, source: SOURCE3 },
@@ -1546,7 +1639,7 @@ var searchCorpusMaterial = (slug, label, definition, broaderSlug, referenceSourc
1546
1639
  label,
1547
1640
  provenance: {
1548
1641
  basis: "evidenced",
1549
- snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
1642
+ snapshot: SEARCH_CORPUS_SNAPSHOT,
1550
1643
  source: `${searchCorpusEvidence(label)}; ${referenceSource}`
1551
1644
  },
1552
1645
  reviewedAt: "2026-08-31",
@@ -1565,13 +1658,13 @@ var MATERIAL_TERMS = [
1565
1658
  "A copper-alloy family historically associated with copper and tin; unmodified bronze does not identify a specific modern composition.",
1566
1659
  CROSSOVER_DEFINITION_SOURCES.bronze
1567
1660
  ),
1568
- term5(
1661
+ term6(
1569
1662
  "ceramic",
1570
1663
  "Ceramic",
1571
1664
  "A fired inorganic non-metallic body other than porcelain."
1572
1665
  ),
1573
1666
  {
1574
- ...term5(
1667
+ ...term6(
1575
1668
  "porcelain",
1576
1669
  "Porcelain",
1577
1670
  "A dense, low-porosity fired ceramic body meeting porcelain classification."
@@ -1583,7 +1676,7 @@ var MATERIAL_TERMS = [
1583
1676
  ]
1584
1677
  },
1585
1678
  {
1586
- ...term5(
1679
+ ...term6(
1587
1680
  "composite",
1588
1681
  "Composite",
1589
1682
  "An engineered material whose performance comes from two or more bound constituents."
@@ -1597,7 +1690,7 @@ var MATERIAL_TERMS = [
1597
1690
  CROSSOVER_DEFINITION_SOURCES.copper
1598
1691
  ),
1599
1692
  {
1600
- ...term5(
1693
+ ...term6(
1601
1694
  "laminate",
1602
1695
  "Laminate",
1603
1696
  "A layered sheet material consolidated around a decorative or protective face."
@@ -1607,7 +1700,7 @@ var MATERIAL_TERMS = [
1607
1700
  { predicate: "reads-as", target: STONE_TARGET }
1608
1701
  ]
1609
1702
  },
1610
- term5(
1703
+ term6(
1611
1704
  NATURAL_FIBRE_SLUG,
1612
1705
  "Natural fibre",
1613
1706
  "A material whose visible fibre is plant- or animal-derived."
@@ -1618,13 +1711,13 @@ var MATERIAL_TERMS = [
1618
1711
  "The metallic chemical element Ni used in solid metals and alloys; the bare term does not establish alloy, grade, or bulk composition.",
1619
1712
  NICKEL_MATERIAL_SOURCE
1620
1713
  ),
1621
- term5(
1714
+ term6(
1622
1715
  "paper",
1623
1716
  "Paper",
1624
1717
  "A sheet material formed primarily from cellulose fibres."
1625
1718
  ),
1626
1719
  {
1627
- ...term5(
1720
+ ...term6(
1628
1721
  "solid-surface",
1629
1722
  "Solid surface",
1630
1723
  "A homogeneous or near-homogeneous cast sheet made from resin and mineral filler."
@@ -1894,7 +1987,7 @@ var MATERIAL_TERMS = [
1894
1987
  CROSSOVER_DEFINITION_SOURCES.denim
1895
1988
  ),
1896
1989
  {
1897
- ...term5(
1990
+ ...term6(
1898
1991
  "vinyl",
1899
1992
  "Vinyl",
1900
1993
  "A resilient material system whose principal polymer is polyvinyl chloride."
@@ -1909,7 +2002,7 @@ var MATERIAL_TERMS = [
1909
2002
 
1910
2003
  // src/axes/mood.ts
1911
2004
  var SNAPSHOT4 = "2026-08-21";
1912
- var MS_MOOD = "materialgraph ms_mood";
2005
+ var MS_MOOD = "ms_mood, a mood dictionary in a materials-retrieval system (src-05)";
1913
2006
  var ADR = "@instruments/taxonomy ADR 0001";
1914
2007
  var MOOD_TERMS = [
1915
2008
  {
@@ -1947,7 +2040,7 @@ var MOOD_TERMS = [
1947
2040
  {
1948
2041
  definition: "Staged and theatrical: strong contrast, deliberate focal points, a room that performs.",
1949
2042
  label: "Dramatic",
1950
- note: "Authored here. materialgraph's `moody` conflates darkness with theatricality; a pale, high-contrast gallery is dramatic and not moody, and a dim snug is moody and not dramatic.",
2043
+ note: "Authored here. ms_mood's `moody` conflates darkness with theatricality; a pale, high-contrast gallery is dramatic and not moody, and a dim snug is moody and not dramatic.",
1951
2044
  provenance: { basis: "authored", source: ADR },
1952
2045
  slug: "dramatic"
1953
2046
  },
@@ -1973,7 +2066,7 @@ var MOOD_TERMS = [
1973
2066
  altLabels: ["ascetic"],
1974
2067
  definition: "Deliberately without comfort or ornament, where the absence is the point rather than a shortage of budget.",
1975
2068
  label: "Austere",
1976
- note: "Authored here. Two estate vocabularies carry a monastic register (materia `tactile-monastic`, materialgraph `monastic`) that no ms_mood term reaches: `calm` and `serious` both understate it, and neither carries the renunciation.",
2069
+ note: "Authored here. Two estate vocabularies carry a monastic register (a rendering pipeline's `tactile-monastic`, a materials-retrieval system's `monastic`) that no ms_mood term reaches: `calm` and `serious` both understate it, and neither carries the renunciation.",
1977
2070
  provenance: { basis: "authored", source: ADR },
1978
2071
  slug: "austere"
1979
2072
  },
@@ -2000,7 +2093,7 @@ var MOOD_TERMS = [
2000
2093
  {
2001
2094
  definition: "Expense legible and intended to be read as expense; the declared opposite of quiet luxury.",
2002
2095
  label: "Luxurious",
2003
- note: "Authored here. materialgraph carries only the quiet register, but four estate terms (`art-deco-luxe`, `Contemporary Luxury`, `residential_luxury`, `hospitality_luxury`) mean the loud one, and collapsing them into `quiet_luxury` would invert their sense. TWO OF THOSE FOUR ARE NOT SETTLED: `residential_luxury` and `hospitality_luxury` read equally well as sector plus TIER - a luxury-tier hotel project rather than a room that looks expensive - and their source dictionary describes itself as routing handles, which does not decide it either way. They are left pointed here because that is where they were found, and recorded as ambiguous rather than resolved by guess. The same declining move as `Modern`.",
2096
+ note: "Authored here. ms_mood carries only the quiet register, but four estate terms (`art-deco-luxe`, `Contemporary Luxury`, `residential_luxury`, `hospitality_luxury`) mean the loud one, and collapsing them into `quiet_luxury` would invert their sense. TWO OF THOSE FOUR ARE NOT SETTLED: `residential_luxury` and `hospitality_luxury` read equally well as sector plus TIER - a luxury-tier hotel project rather than a room that looks expensive - and their source dictionary describes itself as routing handles, which does not decide it either way. They are left pointed here because that is where they were found, and recorded as ambiguous rather than resolved by guess. The same declining move as `Modern`.",
2004
2097
  provenance: { basis: "authored", source: ADR },
2005
2098
  related: [{ predicate: "related-to", target: "tier.market.luxury" }],
2006
2099
  slug: "luxurious"
@@ -2026,7 +2119,7 @@ var MOOD_TERMS = [
2026
2119
  ];
2027
2120
 
2028
2121
  // src/axes/palette.ts
2029
- var COLOUR_MOOD = "materialgraph colour_mood";
2122
+ var COLOUR_MOOD = "colour_mood, a mood dictionary in a materials-retrieval system (src-05)";
2030
2123
  var SNAPSHOT5 = "2026-08-21";
2031
2124
  var COLORSCOPE_AUTHORITY_URI = "https://colorscope.materialinstruments.com";
2032
2125
  var PALETTE_MOOD = "palette-mood";
@@ -2113,13 +2206,13 @@ var PALETTE_HUE_TERMS = [
2113
2206
  label: "Pink",
2114
2207
  slug: "pink"
2115
2208
  }
2116
- ].map((term10) => ({
2117
- ...term10,
2118
- canonicalAuthority: colorScopeAuthority(term10.slug, "color-family"),
2209
+ ].map((term12) => ({
2210
+ ...term12,
2211
+ canonicalAuthority: colorScopeAuthority(term12.slug, "color-family"),
2119
2212
  provenance: {
2120
2213
  basis: "vendored",
2121
2214
  snapshot: SNAPSHOT5,
2122
- source: "@instruments/colorscope COLOR_FAMILIES, via materialgraph colour_family"
2215
+ source: "@instruments/colorscope COLOR_FAMILIES"
2123
2216
  }
2124
2217
  }));
2125
2218
  var PALETTE_TEMPERATURE_TERMS = [
@@ -2138,13 +2231,13 @@ var PALETTE_TEMPERATURE_TERMS = [
2138
2231
  label: "Neutral",
2139
2232
  slug: "neutral"
2140
2233
  }
2141
- ].map((term10) => ({
2142
- ...term10,
2143
- canonicalAuthority: colorScopeAuthority(term10.slug, "temperature-level"),
2234
+ ].map((term12) => ({
2235
+ ...term12,
2236
+ canonicalAuthority: colorScopeAuthority(term12.slug, "temperature-level"),
2144
2237
  provenance: {
2145
2238
  basis: "vendored",
2146
2239
  snapshot: SNAPSHOT5,
2147
- source: "materialgraph colour_undertone"
2240
+ source: "colour_undertone, an undertone dictionary in a materials-retrieval system (src-05)"
2148
2241
  }
2149
2242
  }));
2150
2243
  var PALETTE_CHARACTER_TERMS = [
@@ -2166,7 +2259,7 @@ var PALETTE_CHARACTER_TERMS = [
2166
2259
  altLabels: ["sun-bleached", "washed"],
2167
2260
  definition: "Chroma reduced as if by age, wear or light, rather than chosen low. Distinct from muted: faded implies a stronger original.",
2168
2261
  label: "Faded",
2169
- note: "Authored here. Two estate vocabularies need it (materia's `faded` keyword and `sun-bleached-mediterranean`) and colorscope's palette moods do not reach it.",
2262
+ 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.",
2170
2263
  provenance: { basis: "authored", source: "@instruments/taxonomy ADR 0001" },
2171
2264
  slug: "faded"
2172
2265
  },
@@ -2174,7 +2267,7 @@ var PALETTE_CHARACTER_TERMS = [
2174
2267
  canonicalAuthority: colorScopeAuthority("mid", "lightness-level"),
2175
2268
  definition: "Mid-range lightness across the scheme: neither pale nor deep. The midpoint that `light` and `dark` imply and neither states.",
2176
2269
  label: "Mid",
2177
- note: "NOT authored here, and the first draft of this term was the exact mistake this package exists to stop. Samplize 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 Samplize's spelling recorded under Seen in the wild where it belongs.",
2270
+ 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.",
2178
2271
  provenance: {
2179
2272
  basis: "vendored",
2180
2273
  snapshot: SNAPSHOT5,
@@ -2229,17 +2322,17 @@ var PALETTE_CHARACTER_TERMS = [
2229
2322
  ];
2230
2323
 
2231
2324
  // src/axes/pattern.ts
2232
- var SOURCE4 = "DesignShop frozen estate pattern vocabulary";
2325
+ var SOURCE4 = "pattern vocabulary in a furnishings retailer (src-03)";
2233
2326
  var SNAPSHOT6 = "2026-08-25";
2234
- var MG_SNAPSHOT2 = "2026-08-27";
2235
- var MG_SCALE = "materialgraph ms_pattern_scale";
2236
- var MG_DENSITY = "materialgraph ms_pattern_density";
2237
- var MG_REGULARITY = "materialgraph ms_pattern_regularity";
2238
- var MG_DIRECTIONALITY = "materialgraph ms_directionality";
2327
+ var RETRIEVAL_SNAPSHOT2 = "2026-08-27";
2328
+ var RETRIEVAL_SCALE = "ms_pattern_scale, a dictionary in a materials-retrieval system (src-05)";
2329
+ var RETRIEVAL_DENSITY = "ms_pattern_density, a dictionary in a materials-retrieval system (src-05)";
2330
+ var RETRIEVAL_REGULARITY = "ms_pattern_regularity, a dictionary in a materials-retrieval system (src-05)";
2331
+ var RETRIEVAL_DIRECTIONALITY = "ms_directionality, a dictionary in a materials-retrieval system (src-05)";
2239
2332
  var GEOMETRY_REVIEW_DATE = "2026-08-31";
2240
- var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract and independent review comment c457ef92-372b-4db0-8490-0b96ecccc8ac";
2241
- var GEOMETRY_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; MaterialGraph herringbone and chevron product-language audit at 53df40868bfb09bfe69bc66c455c051e34005ae1:packages/products/src/search/eval/pattern-fidelity.ts";
2242
- var term6 = (slug, label, definition, extra = {}) => ({
2333
+ var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
2334
+ var GEOMETRY_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
2335
+ var term7 = (slug, label, definition, extra = {}) => ({
2243
2336
  definition,
2244
2337
  label,
2245
2338
  provenance: { basis: "evidenced", snapshot: SNAPSHOT6, source: SOURCE4 },
@@ -2249,64 +2342,64 @@ var term6 = (slug, label, definition, extra = {}) => ({
2249
2342
  var vendored2 = (source, slug, label, definition, rank) => ({
2250
2343
  definition,
2251
2344
  label,
2252
- provenance: { basis: "vendored", snapshot: MG_SNAPSHOT2, source },
2345
+ provenance: { basis: "vendored", snapshot: RETRIEVAL_SNAPSHOT2, source },
2253
2346
  slug,
2254
2347
  ...rank === void 0 ? {} : { rank }
2255
2348
  });
2256
2349
  var PATTERN_TYPE_TERMS = [
2257
- term6(
2350
+ term7(
2258
2351
  "plain",
2259
2352
  "Plain",
2260
2353
  "No deliberate repeated motif or representational surface image."
2261
2354
  ),
2262
- term6(
2355
+ term7(
2263
2356
  "abstract-organic",
2264
2357
  "Abstract or organic",
2265
2358
  "Non-representational marks organised with irregular or biomorphic movement."
2266
2359
  ),
2267
- term6(
2360
+ term7(
2268
2361
  "animal-print",
2269
2362
  "Animal print",
2270
2363
  "A motif derived from animal markings or skins."
2271
2364
  ),
2272
- term6(
2365
+ term7(
2273
2366
  "botanical",
2274
2367
  "Botanical",
2275
2368
  "A representational motif of plants, flowers, foliage or fruit."
2276
2369
  ),
2277
- term6(
2370
+ term7(
2278
2371
  "damask",
2279
2372
  "Damask",
2280
2373
  "A mirrored or scrolling ornamental repeat derived from woven damask and related brocades."
2281
2374
  ),
2282
- term6(
2375
+ term7(
2283
2376
  "concrete-effect",
2284
2377
  "Concrete effect",
2285
2378
  "A printed or formed surface intended to read as concrete rather than its substrate."
2286
2379
  ),
2287
- term6(
2380
+ term7(
2288
2381
  "cultural-heritage",
2289
2382
  "Cultural heritage",
2290
2383
  "A motif explicitly drawn from a named cultural or craft tradition."
2291
2384
  ),
2292
- term6(
2385
+ term7(
2293
2386
  "geometric",
2294
2387
  "Geometric",
2295
2388
  "A repeat organised from geometric shapes, grids or measured linework."
2296
2389
  ),
2297
- term6(
2390
+ term7(
2298
2391
  "herringbone-chevron",
2299
2392
  "Herringbone or chevron",
2300
2393
  "A legacy combined reading for directional zigzags formed by angled units or marks.",
2301
2394
  {
2302
2395
  introducedAt: "2026-08-30",
2303
- note: "Deprecated by the Linear TAX-45 reviewed implementation contract and independent review comment c457ef92-372b-4db0-8490-0b96ecccc8ac because one combined identity could not distinguish broken herringbone from continuous chevron motifs. Zigzag preserves the non-specific historical meaning; use the narrower herringbone or chevron concept when evidence supports it.",
2396
+ note: "Deprecated by the Linear TAX-45 reviewed implementation contract because one combined identity could not distinguish broken herringbone from continuous chevron motifs. Zigzag preserves the non-specific historical meaning; use the narrower herringbone or chevron concept when evidence supports it.",
2304
2397
  reviewedAt: GEOMETRY_REVIEW_DATE,
2305
2398
  status: "deprecated",
2306
2399
  supersededByReference: "pattern.type.zigzag"
2307
2400
  }
2308
2401
  ),
2309
- term6(
2402
+ term7(
2310
2403
  "zigzag",
2311
2404
  "Zigzag",
2312
2405
  "A repeated motif that alternates direction through connected or visually aligned angled marks without asserting herringbone or chevron specifically.",
@@ -2320,7 +2413,7 @@ var PATTERN_TYPE_TERMS = [
2320
2413
  reviewedAt: GEOMETRY_REVIEW_DATE
2321
2414
  }
2322
2415
  ),
2323
- term6(
2416
+ term7(
2324
2417
  "herringbone",
2325
2418
  "Herringbone pattern",
2326
2419
  "A broken zigzag motif whose alternating angled marks or units terminate against one another rather than forming aligned V points.",
@@ -2335,7 +2428,7 @@ var PATTERN_TYPE_TERMS = [
2335
2428
  reviewedAt: GEOMETRY_REVIEW_DATE
2336
2429
  }
2337
2430
  ),
2338
- term6(
2431
+ term7(
2339
2432
  "chevron",
2340
2433
  "Chevron pattern",
2341
2434
  "A continuous zigzag motif organised as repeated aligned V-shaped points, independent of whether physical units establish it.",
@@ -2350,73 +2443,73 @@ var PATTERN_TYPE_TERMS = [
2350
2443
  reviewedAt: GEOMETRY_REVIEW_DATE
2351
2444
  }
2352
2445
  ),
2353
- term6(
2446
+ term7(
2354
2447
  "leather-effect",
2355
2448
  "Leather effect",
2356
2449
  "A surface intended to read as leather rather than its substrate."
2357
2450
  ),
2358
- term6(
2451
+ term7(
2359
2452
  "marbleised",
2360
2453
  "Marbleised",
2361
2454
  "Veining or clouding arranged to evoke marble."
2362
2455
  ),
2363
- term6(
2456
+ term7(
2364
2457
  "metal-effect",
2365
2458
  "Metal effect",
2366
2459
  "A surface intended to read as metal rather than its substrate."
2367
2460
  ),
2368
- term6(
2461
+ term7(
2369
2462
  "natural-motif",
2370
2463
  "Natural motif",
2371
2464
  "A non-botanical motif read as naturally occurring material or landscape incident."
2372
2465
  ),
2373
- term6(
2466
+ term7(
2374
2467
  "novelty",
2375
2468
  "Novelty",
2376
2469
  "A pictorial repeat whose subject is intentionally unexpected or conversational."
2377
2470
  ),
2378
- term6(
2471
+ term7(
2379
2472
  "plaid-check",
2380
2473
  "Plaid or check",
2381
2474
  "An orthogonal repeat of crossing bands or alternating squares."
2382
2475
  ),
2383
- term6(
2476
+ term7(
2384
2477
  "scenic",
2385
2478
  "Scenic",
2386
2479
  "A continuous or panelled representational landscape or architectural scene."
2387
2480
  ),
2388
- term6(
2481
+ term7(
2389
2482
  "stone-effect",
2390
2483
  "Stone effect",
2391
2484
  "A surface intended to read as stone rather than its substrate."
2392
2485
  ),
2393
- term6("stripe", "Stripe", "A repeat organised as parallel bands."),
2394
- term6(
2486
+ term7("stripe", "Stripe", "A repeat organised as parallel bands."),
2487
+ term7(
2395
2488
  "gradient",
2396
2489
  "Gradient",
2397
2490
  "A continuous or stepped transition in tone, colour or mark density."
2398
2491
  ),
2399
- term6(
2492
+ term7(
2400
2493
  "texture",
2401
2494
  "Texture",
2402
2495
  "A non-representational repeat whose principal reading is tactile or relief-like."
2403
2496
  ),
2404
- term6(
2497
+ term7(
2405
2498
  "toile",
2406
2499
  "Toile",
2407
2500
  "A fine-line pastoral or narrative pictorial repeat, usually in one colour."
2408
2501
  ),
2409
- term6(
2502
+ term7(
2410
2503
  "character",
2411
2504
  "Whimsy and character",
2412
2505
  "A playful illustrative motif whose principal effect is personality rather than subject fidelity."
2413
2506
  ),
2414
- term6(
2507
+ term7(
2415
2508
  "woodgrain-effect",
2416
2509
  "Woodgrain effect",
2417
2510
  "A surface intended to read as wood grain rather than its substrate."
2418
2511
  ),
2419
- term6(
2512
+ term7(
2420
2513
  "woven-effect",
2421
2514
  "Woven effect",
2422
2515
  "A surface intended to read as woven threads rather than its construction."
@@ -2424,35 +2517,35 @@ var PATTERN_TYPE_TERMS = [
2424
2517
  ];
2425
2518
  var PATTERN_SCALE_TERMS = [
2426
2519
  vendored2(
2427
- MG_SCALE,
2520
+ RETRIEVAL_SCALE,
2428
2521
  "micro",
2429
2522
  "Micro",
2430
2523
  "A repeat small enough to read as texture at arm's length.",
2431
2524
  1
2432
2525
  ),
2433
2526
  vendored2(
2434
- MG_SCALE,
2527
+ RETRIEVAL_SCALE,
2435
2528
  "small",
2436
2529
  "Small",
2437
2530
  "A repeat legible close to but not across a room.",
2438
2531
  2
2439
2532
  ),
2440
2533
  vendored2(
2441
- MG_SCALE,
2534
+ RETRIEVAL_SCALE,
2442
2535
  "medium",
2443
2536
  "Medium",
2444
2537
  "A repeat legible at normal viewing distance.",
2445
2538
  3
2446
2539
  ),
2447
2540
  vendored2(
2448
- MG_SCALE,
2541
+ RETRIEVAL_SCALE,
2449
2542
  "large",
2450
2543
  "Large",
2451
2544
  "A repeat that reads across a room and organises a wall.",
2452
2545
  4
2453
2546
  ),
2454
2547
  vendored2(
2455
- MG_SCALE,
2548
+ RETRIEVAL_SCALE,
2456
2549
  "oversized",
2457
2550
  "Oversized",
2458
2551
  "A repeat larger than the surface usually carrying it, so it reads as a fragment.",
@@ -2461,42 +2554,42 @@ var PATTERN_SCALE_TERMS = [
2461
2554
  ];
2462
2555
  var PATTERN_DENSITY_TERMS = [
2463
2556
  vendored2(
2464
- MG_DENSITY,
2557
+ RETRIEVAL_DENSITY,
2465
2558
  "unpatterned",
2466
2559
  "Unpatterned",
2467
2560
  "No motif; a plain field.",
2468
2561
  1
2469
2562
  ),
2470
2563
  vendored2(
2471
- MG_DENSITY,
2564
+ RETRIEVAL_DENSITY,
2472
2565
  "sparse",
2473
2566
  "Sparse",
2474
2567
  "Isolated motifs with the ground clearly dominant.",
2475
2568
  2
2476
2569
  ),
2477
2570
  vendored2(
2478
- MG_DENSITY,
2571
+ RETRIEVAL_DENSITY,
2479
2572
  "light",
2480
2573
  "Light",
2481
2574
  "Motif present throughout while the ground still reads.",
2482
2575
  3
2483
2576
  ),
2484
2577
  vendored2(
2485
- MG_DENSITY,
2578
+ RETRIEVAL_DENSITY,
2486
2579
  "moderate",
2487
2580
  "Moderate",
2488
2581
  "Motif and ground hold roughly equal weight.",
2489
2582
  4
2490
2583
  ),
2491
2584
  vendored2(
2492
- MG_DENSITY,
2585
+ RETRIEVAL_DENSITY,
2493
2586
  "busy",
2494
2587
  "Busy",
2495
2588
  "Motif dominant, with the ground reduced to gaps.",
2496
2589
  5
2497
2590
  ),
2498
2591
  vendored2(
2499
- MG_DENSITY,
2592
+ RETRIEVAL_DENSITY,
2500
2593
  "dense",
2501
2594
  "Dense",
2502
2595
  "Motif covering the field, with no ground reading as ground.",
@@ -2505,35 +2598,35 @@ var PATTERN_DENSITY_TERMS = [
2505
2598
  ];
2506
2599
  var PATTERN_REGULARITY_TERMS = [
2507
2600
  vendored2(
2508
- MG_REGULARITY,
2601
+ RETRIEVAL_REGULARITY,
2509
2602
  "uniform",
2510
2603
  "Uniform",
2511
2604
  "A mechanically exact repeat with no variation between units.",
2512
2605
  1
2513
2606
  ),
2514
2607
  vendored2(
2515
- MG_REGULARITY,
2608
+ RETRIEVAL_REGULARITY,
2516
2609
  "ordered",
2517
2610
  "Ordered",
2518
2611
  "A governed repeat carrying slight, deliberate variation.",
2519
2612
  2
2520
2613
  ),
2521
2614
  vendored2(
2522
- MG_REGULARITY,
2615
+ RETRIEVAL_REGULARITY,
2523
2616
  "relaxed",
2524
2617
  "Relaxed",
2525
2618
  "A repeat readable as a repeat, loosely held.",
2526
2619
  3
2527
2620
  ),
2528
2621
  vendored2(
2529
- MG_REGULARITY,
2622
+ RETRIEVAL_REGULARITY,
2530
2623
  "irregular",
2531
2624
  "Irregular",
2532
2625
  "Related motifs with no governing repeat.",
2533
2626
  4
2534
2627
  ),
2535
2628
  vendored2(
2536
- MG_REGULARITY,
2629
+ RETRIEVAL_REGULARITY,
2537
2630
  "organic",
2538
2631
  "Organic",
2539
2632
  "Variation reading as grown or formed rather than composed.",
@@ -2542,37 +2635,37 @@ var PATTERN_REGULARITY_TERMS = [
2542
2635
  ];
2543
2636
  var PATTERN_DIRECTIONALITY_TERMS = [
2544
2637
  vendored2(
2545
- MG_DIRECTIONALITY,
2638
+ RETRIEVAL_DIRECTIONALITY,
2546
2639
  "non-directional",
2547
2640
  "Non-directional",
2548
2641
  "No axis; the pattern reads the same whichever way it is turned."
2549
2642
  ),
2550
2643
  vendored2(
2551
- MG_DIRECTIONALITY,
2644
+ RETRIEVAL_DIRECTIONALITY,
2552
2645
  "low",
2553
2646
  "Low",
2554
2647
  "A faint axis, visible without governing the composition."
2555
2648
  ),
2556
2649
  vendored2(
2557
- MG_DIRECTIONALITY,
2650
+ RETRIEVAL_DIRECTIONALITY,
2558
2651
  "linear",
2559
2652
  "Linear",
2560
2653
  "One clear axis the pattern runs along."
2561
2654
  ),
2562
2655
  vendored2(
2563
- MG_DIRECTIONALITY,
2656
+ RETRIEVAL_DIRECTIONALITY,
2564
2657
  "strong-linear",
2565
2658
  "Strong linear",
2566
2659
  "One dominant axis that fixes how the material must be hung or laid."
2567
2660
  ),
2568
2661
  vendored2(
2569
- MG_DIRECTIONALITY,
2662
+ RETRIEVAL_DIRECTIONALITY,
2570
2663
  "radial",
2571
2664
  "Radial",
2572
2665
  "Organised about a centre rather than along an axis."
2573
2666
  ),
2574
2667
  vendored2(
2575
- MG_DIRECTIONALITY,
2668
+ RETRIEVAL_DIRECTIONALITY,
2576
2669
  "bi-directional",
2577
2670
  "Bi-directional",
2578
2671
  "Two axes of equal weight, so the material reads correctly either way up."
@@ -2587,7 +2680,7 @@ var PATTERN_TERMS = [
2587
2680
  ];
2588
2681
 
2589
2682
  // src/axes/period.ts
2590
- var AUTHORED3 = {
2683
+ var AUTHORED4 = {
2591
2684
  basis: "authored",
2592
2685
  source: "@instruments/taxonomy ADR 0001"
2593
2686
  };
@@ -2597,7 +2690,7 @@ var PERIOD_TERMS = [
2597
2690
  definition: "Roughly 1100 to 1500 for anything with surviving fabric: load-bearing masonry, timber frames, and openings sized by what the structure would allow rather than by the room.",
2598
2691
  label: "Medieval",
2599
2692
  note: "The historical Middle Ages start far earlier, around 500, but almost nothing standing predates 1100, so the useful bracket for a building or an interior starts there.",
2600
- provenance: AUTHORED3,
2693
+ provenance: AUTHORED4,
2601
2694
  slug: "medieval",
2602
2695
  span: {
2603
2696
  circa: true,
@@ -2613,7 +2706,7 @@ var PERIOD_TERMS = [
2613
2706
  definition: "Roughly 1400 to 1600 in Italy and 1500 to 1620 north of the Alps; the bracket is dated from when classical proportion arrived locally, so it moves by a century across Europe.",
2614
2707
  label: "Renaissance",
2615
2708
  note: "Tudor (1485-1603) and Elizabethan (1558-1603) are the British dynastic labels for the same span and are the ones the UK trade uses; neither covers the continental early Renaissance. Also a style name - see the header on the STYLE asymmetry.",
2616
- provenance: AUTHORED3,
2709
+ provenance: AUTHORED4,
2617
2710
  slug: "renaissance",
2618
2711
  span: {
2619
2712
  circa: true,
@@ -2629,7 +2722,7 @@ var PERIOD_TERMS = [
2629
2722
  definition: "Roughly 1600 to 1750, between the Renaissance and the neoclassical turn.",
2630
2723
  label: "Baroque",
2631
2724
  note: "Stuart (1603-1714) is the British dynastic label for nearly the same span, and by this axis's own rule would be the better id; `baroque` is kept because it is what the English-language trade says of a building of this date anywhere in Europe. Jacobean (1603-1625) is a sub-span, not a synonym. Also a style name - see the header.",
2632
- provenance: AUTHORED3,
2725
+ provenance: AUTHORED4,
2633
2726
  slug: "baroque",
2634
2727
  span: {
2635
2728
  circa: true,
@@ -2645,7 +2738,7 @@ var PERIOD_TERMS = [
2645
2738
  definition: "1714 to 1830, the four Georges: classical proportion applied to ordinary building, sash windows, and the terrace and square as the unit of urban development.",
2646
2739
  label: "Georgian",
2647
2740
  note: "Georgian is used in the US market too, usually as Georgian Colonial. Federal (roughly 1780-1830) is the US label for the later half only, not for the whole span - it starts after independence, so nothing before 1776 is Federal.",
2648
- provenance: AUTHORED3,
2741
+ provenance: AUTHORED4,
2649
2742
  seenAs: ["Colonial"],
2650
2743
  slug: "georgian",
2651
2744
  span: {
@@ -2662,7 +2755,7 @@ var PERIOD_TERMS = [
2662
2755
  definition: "The last Georgian phase, roughly 1795 to 1837: stucco over brick, cast iron balconies, and classical detail thinned and stretched.",
2663
2756
  label: "Regency",
2664
2757
  note: "Subsumed under `georgian` because it genuinely is one - a Regency interior IS a Georgian-era interior, which is what a broader term asserts and what makes this one of the few legitimate parents on this axis. The Regency proper is only 1811-1820; the trade uses the wider bracket, and this term follows the trade.",
2665
- provenance: AUTHORED3,
2758
+ provenance: AUTHORED4,
2666
2759
  slug: "regency",
2667
2760
  span: {
2668
2761
  circa: false,
@@ -2678,7 +2771,7 @@ var PERIOD_TERMS = [
2678
2771
  definition: "1837 to 1901: industrial production of building components, the bay window, pattern everywhere it could be printed or woven, and the first mass suburbs.",
2679
2772
  label: "Victorian",
2680
2773
  note: "Neither US label covers the span. Antebellum runs to 1861 and is regional to the American South; the Gilded Age runs roughly 1877 to 1900 and is the later half only. Between them they overlap most of the Victorian bracket and match none of it, which is why they are carried as other names with this caveat rather than a clean crosswalk.",
2681
- provenance: AUTHORED3,
2774
+ provenance: AUTHORED4,
2682
2775
  slug: "victorian",
2683
2776
  span: {
2684
2777
  circa: false,
@@ -2693,7 +2786,7 @@ var PERIOD_TERMS = [
2693
2786
  definition: "1901 to 1914 in trade usage: lighter, plainer and better-lit than late Victorian, with wider plots and less pattern.",
2694
2787
  label: "Edwardian",
2695
2788
  note: "The reign ends in 1910 but the building manner runs to the outbreak of war, and the trade dates it that way. NO US EQUIVALENT EXISTS and none is invented here - the American labels reached for at this date (Craftsman, Arts and Crafts, Prairie) are all styles, and putting one of them here would be the exact error this axis was built to stop.",
2696
- provenance: AUTHORED3,
2789
+ provenance: AUTHORED4,
2697
2790
  slug: "edwardian",
2698
2791
  span: {
2699
2792
  circa: false,
@@ -2709,7 +2802,7 @@ var PERIOD_TERMS = [
2709
2802
  definition: "1918 to 1939: the semi-detached suburb, the cinema and the lido, and the point at which modernism and revivalism were being built side by side on the same street.",
2710
2803
  label: "Interwar",
2711
2804
  note: "The one bracket in this axis that travels without adjustment, because the dates are the same everywhere the wars were. The US decade labels - Jazz Age, Depression era - are sub-spans and are not carried as equivalents. This is where an Art Deco building of the period sits; the style claim is separate and lives on STYLE.",
2712
- provenance: AUTHORED3,
2805
+ provenance: AUTHORED4,
2713
2806
  slug: "interwar",
2714
2807
  span: {
2715
2808
  circa: false,
@@ -2725,7 +2818,7 @@ var PERIOD_TERMS = [
2725
2818
  definition: "1945 to 1970: postwar reconstruction, system building, and the first interiors designed around mass-produced furniture rather than inherited pieces.",
2726
2819
  label: "Mid-Century",
2727
2820
  note: "`Mid-Century Modern` is a STYLE and is listed under Seen in the wild only because sources routinely write it when they mean the date. The two come apart in both directions: a 1958 local authority housing block is mid-century and not Mid-Century Modern, and a 2023 walnut sideboard is Mid-Century Modern and not mid-century.",
2728
- provenance: AUTHORED3,
2821
+ provenance: AUTHORED4,
2729
2822
  seenAs: [
2730
2823
  "Mid-Century Modern",
2731
2824
  "mid-century",
@@ -2747,7 +2840,7 @@ var PERIOD_TERMS = [
2747
2840
  definition: "1970 to 1999: the bracket after mid-century and before the millennium, covering the postmodern turn, the high-tech buildings and the first wave of warehouse conversion.",
2748
2841
  label: "Late Twentieth Century",
2749
2842
  note: "THE WEAKEST TERM ON THIS AXIS, and flagged rather than dressed up. The trade has no settled label for these thirty years - it dates by decade, or reaches for a style name instead - so this is a bucket the axis needs for completeness rather than a period anyone asks for by name. Expect it to be split or renamed once there is usage evidence to split it on.",
2750
- provenance: AUTHORED3,
2843
+ provenance: AUTHORED4,
2751
2844
  slug: "late-century",
2752
2845
  span: {
2753
2846
  circa: true,
@@ -2763,7 +2856,7 @@ var PERIOD_TERMS = [
2763
2856
  definition: "2000 onwards: built or made in the present century, whatever it looks like.",
2764
2857
  label: "Contemporary",
2765
2858
  note: "DELIBERATELY OPEN-ENDED, and it will need a successor bracket eventually. Collides by name with `style.contemporary`, which means the prevailing current idiom rather than a date; the axis prefix disambiguates. A 2024 building in full Georgian pastiche is `period.contemporary` and is emphatically not `style.contemporary`, which is the case that shows why the two cannot be merged.",
2766
- provenance: AUTHORED3,
2859
+ provenance: AUTHORED4,
2767
2860
  seenAs: ["Contemporary", "modern", "new build"],
2768
2861
  slug: "contemporary",
2769
2862
  span: {
@@ -2780,7 +2873,7 @@ var PERIOD_TERMS = [
2780
2873
  // src/axes/place.ts
2781
2874
  var SNAPSHOT7 = "2026-08-21";
2782
2875
  var ADR2 = "@instruments/taxonomy ADR 0001";
2783
- var ARCHITIZER_CONTEXTS = "architizer CONTEXTS";
2876
+ var PLATFORM_CONTEXTS = "CONTEXTS in an architecture-projects platform (src-01)";
2784
2877
  var PLACE_REGION_TERMS = [
2785
2878
  {
2786
2879
  definition: "Lime-rendered mass walls, small deep openings, terracotta, shade as a planning move, and an indoor-outdoor threshold treated as habitable.",
@@ -2788,7 +2881,7 @@ var PLACE_REGION_TERMS = [
2788
2881
  provenance: {
2789
2882
  basis: "evidenced",
2790
2883
  snapshot: SNAPSHOT7,
2791
- source: "materia, architizer"
2884
+ source: "a rendering pipeline (src-08) and an architecture-projects platform (src-01)"
2792
2885
  },
2793
2886
  slug: "mediterranean"
2794
2887
  },
@@ -2813,7 +2906,7 @@ var PLACE_REGION_TERMS = [
2813
2906
  provenance: {
2814
2907
  basis: "evidenced",
2815
2908
  snapshot: SNAPSHOT7,
2816
- source: "designround, architizer, materialgraph"
2909
+ source: "an editorial image library (src-02), an architecture-projects platform (src-01) and a materials-retrieval system (src-05)"
2817
2910
  },
2818
2911
  seenAs: ["Nordic modern", "nordic_warm", "Scandinavian"],
2819
2912
  slug: "nordic"
@@ -2824,7 +2917,7 @@ var PLACE_REGION_TERMS = [
2824
2917
  provenance: {
2825
2918
  basis: "evidenced",
2826
2919
  snapshot: SNAPSHOT7,
2827
- source: "architizer, materia"
2920
+ source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
2828
2921
  },
2829
2922
  seenAs: ["Japanese contemporary"],
2830
2923
  slug: "japanese"
@@ -2835,7 +2928,7 @@ var PLACE_REGION_TERMS = [
2835
2928
  provenance: {
2836
2929
  basis: "evidenced",
2837
2930
  snapshot: SNAPSHOT7,
2838
- source: "designround, designshop"
2931
+ source: "an editorial image library (src-02) and a furnishings retailer (src-03)"
2839
2932
  },
2840
2933
  seenAs: ["English Country", "Country"],
2841
2934
  slug: "english-country"
@@ -2887,12 +2980,12 @@ var PLACE_LANDSCAPE_TERMS = [
2887
2980
  provenance: {
2888
2981
  basis: "evidenced",
2889
2982
  snapshot: SNAPSHOT7,
2890
- source: "architizer CONTEXTS, designshop, designround, materia, materialgraph"
2983
+ 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)"
2891
2984
  },
2892
2985
  slug: "coastal",
2893
2986
  usage: {
2894
2987
  band: "occasional",
2895
- corpus: "designshop room schemes",
2988
+ corpus: "room schemes in a furnishings retailer (src-03)",
2896
2989
  snapshot: "2026-08-18"
2897
2990
  }
2898
2991
  },
@@ -2902,7 +2995,7 @@ var PLACE_LANDSCAPE_TERMS = [
2902
2995
  provenance: {
2903
2996
  basis: "vendored",
2904
2997
  snapshot: SNAPSHOT7,
2905
- source: ARCHITIZER_CONTEXTS
2998
+ source: PLATFORM_CONTEXTS
2906
2999
  },
2907
3000
  slug: "waterfront"
2908
3001
  },
@@ -2912,7 +3005,7 @@ var PLACE_LANDSCAPE_TERMS = [
2912
3005
  provenance: {
2913
3006
  basis: "evidenced",
2914
3007
  snapshot: SNAPSHOT7,
2915
- source: "architizer"
3008
+ source: "an architecture-projects platform (src-01)"
2916
3009
  },
2917
3010
  seenAs: ["Tropical modernism"],
2918
3011
  slug: "tropical"
@@ -2923,7 +3016,7 @@ var PLACE_LANDSCAPE_TERMS = [
2923
3016
  provenance: {
2924
3017
  basis: "vendored",
2925
3018
  snapshot: SNAPSHOT7,
2926
- source: ARCHITIZER_CONTEXTS
3019
+ source: PLATFORM_CONTEXTS
2927
3020
  },
2928
3021
  slug: "desert"
2929
3022
  },
@@ -2934,7 +3027,7 @@ var PLACE_LANDSCAPE_TERMS = [
2934
3027
  provenance: {
2935
3028
  basis: "vendored",
2936
3029
  snapshot: SNAPSHOT7,
2937
- source: ARCHITIZER_CONTEXTS
3030
+ source: PLATFORM_CONTEXTS
2938
3031
  },
2939
3032
  slug: "mountain"
2940
3033
  },
@@ -2944,7 +3037,7 @@ var PLACE_LANDSCAPE_TERMS = [
2944
3037
  provenance: {
2945
3038
  basis: "vendored",
2946
3039
  snapshot: SNAPSHOT7,
2947
- source: ARCHITIZER_CONTEXTS
3040
+ source: PLATFORM_CONTEXTS
2948
3041
  },
2949
3042
  slug: "forest"
2950
3043
  },
@@ -2955,7 +3048,7 @@ var PLACE_LANDSCAPE_TERMS = [
2955
3048
  provenance: {
2956
3049
  basis: "vendored",
2957
3050
  snapshot: SNAPSHOT7,
2958
- source: ARCHITIZER_CONTEXTS
3051
+ source: PLATFORM_CONTEXTS
2959
3052
  },
2960
3053
  slug: "rural"
2961
3054
  },
@@ -2965,7 +3058,7 @@ var PLACE_LANDSCAPE_TERMS = [
2965
3058
  provenance: {
2966
3059
  basis: "vendored",
2967
3060
  snapshot: SNAPSHOT7,
2968
- source: ARCHITIZER_CONTEXTS
3061
+ source: PLATFORM_CONTEXTS
2969
3062
  },
2970
3063
  slug: "suburban"
2971
3064
  },
@@ -2976,7 +3069,7 @@ var PLACE_LANDSCAPE_TERMS = [
2976
3069
  provenance: {
2977
3070
  basis: "vendored",
2978
3071
  snapshot: SNAPSHOT7,
2979
- source: ARCHITIZER_CONTEXTS
3072
+ source: PLATFORM_CONTEXTS
2980
3073
  },
2981
3074
  seenAs: ["Dense urban", "Urban infill", "downtown"],
2982
3075
  slug: "urban"
@@ -2996,12 +3089,12 @@ var searchedUniclass = (query, date = "2026-08-27") => ({
2996
3089
  scheme: "uniclass",
2997
3090
  via: "uniclass.thenbs.com/taxon, Pr table walked from Pr_20 to Pr_90"
2998
3091
  });
2999
- var ESTATE2 = "DesignShop frozen estate and Material Instruments product vocabularies";
3092
+ var ESTATE2 = "product vocabularies in a furnishings retailer (src-03) and in-house";
3000
3093
  var ESTATE_SNAPSHOT2 = "2026-08-25";
3001
- var CORPUS2 = "Material Bank catalogue, us_hierarchy_category_v2 level-2 rollup";
3094
+ var CORPUS2 = "the us_hierarchy_category_v2 level-2 rollup in a materials-marketplace catalogue (src-04)";
3002
3095
  var CORPUS_SNAPSHOT2 = "2026-08-27";
3003
3096
  var SEARCH_REVIEW_DATE2 = "2026-08-31";
3004
- var term7 = (slug, label, definition, extra = {}) => ({
3097
+ var term8 = (slug, label, definition, extra = {}) => ({
3005
3098
  definition,
3006
3099
  label,
3007
3100
  provenance: { basis: "evidenced", snapshot: ESTATE_SNAPSHOT2, source: ESTATE2 },
@@ -3021,7 +3114,7 @@ var fromSearchCorpus = (slug, label, definition, extra = {}) => ({
3021
3114
  label,
3022
3115
  provenance: {
3023
3116
  basis: "evidenced",
3024
- snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
3117
+ snapshot: SEARCH_CORPUS_SNAPSHOT,
3025
3118
  source: searchCorpusEvidence(label)
3026
3119
  },
3027
3120
  reviewedAt: SEARCH_REVIEW_DATE2,
@@ -3029,7 +3122,7 @@ var fromSearchCorpus = (slug, label, definition, extra = {}) => ({
3029
3122
  ...extra
3030
3123
  });
3031
3124
  var PRODUCT_CATEGORY_TERMS = [
3032
- term7(
3125
+ term8(
3033
3126
  "tile",
3034
3127
  "Tile",
3035
3128
  "A modular hard-surface unit made to be installed in a repeated field.",
@@ -3037,7 +3130,7 @@ var PRODUCT_CATEGORY_TERMS = [
3037
3130
  external: [uniclass2("Pr_35_93_96", "Wall and floor tile units", "exact")]
3038
3131
  }
3039
3132
  ),
3040
- term7(
3133
+ term8(
3041
3134
  "carpet-and-rug",
3042
3135
  "Carpet and rug",
3043
3136
  "A textile floor covering, fixed or loose laid.",
@@ -3054,7 +3147,7 @@ var PRODUCT_CATEGORY_TERMS = [
3054
3147
  reviewedAt: "2026-08-31"
3055
3148
  }
3056
3149
  ),
3057
- term7(
3150
+ term8(
3058
3151
  "countertop",
3059
3152
  "Countertop",
3060
3153
  "A product or fabricated assembly supplied as a horizontal work surface.",
@@ -3064,7 +3157,7 @@ var PRODUCT_CATEGORY_TERMS = [
3064
3157
  ]
3065
3158
  }
3066
3159
  ),
3067
- term7(
3160
+ term8(
3068
3161
  "flooring",
3069
3162
  "Flooring",
3070
3163
  "A product supplied to form a finished walking surface.",
@@ -3072,7 +3165,7 @@ var PRODUCT_CATEGORY_TERMS = [
3072
3165
  external: [uniclass2("Pr_35_57_71", "Resilient floor coverings", "close")]
3073
3166
  }
3074
3167
  ),
3075
- term7(
3168
+ term8(
3076
3169
  "wallcovering",
3077
3170
  "Wallcovering",
3078
3171
  "A sheet, roll or panel product applied as the visible wall surface.",
@@ -3337,71 +3430,119 @@ var PRODUCT_CATEGORY_TERMS = [
3337
3430
  ];
3338
3431
 
3339
3432
  // src/axes/requirement.ts
3340
- var SOURCE5 = "Material Instruments residential and commercial project requirements";
3433
+ var SOURCE5 = "in-house residential and commercial project requirements";
3341
3434
  var SNAPSHOT8 = "2026-08-25";
3342
- var term8 = (slug, label, definition) => ({
3435
+ var term9 = (slug, label, definition) => ({
3343
3436
  definition,
3344
3437
  label,
3345
3438
  provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: SOURCE5 },
3346
3439
  slug
3347
3440
  });
3348
3441
  var REQUIREMENT_TERMS = [
3349
- term8(
3442
+ term9(
3350
3443
  "budget",
3351
3444
  "Budget",
3352
3445
  "The allowed monetary cost or cost band for the applicable scope."
3353
3446
  ),
3354
- term8(
3447
+ term9(
3355
3448
  "availability",
3356
3449
  "Availability",
3357
3450
  "Whether the thing can be supplied in the required market and time window."
3358
3451
  ),
3359
- term8(
3452
+ term9(
3360
3453
  "lead-time",
3361
3454
  "Lead time",
3362
3455
  "The maximum elapsed time acceptable between commitment and supply."
3363
3456
  ),
3364
- term8(
3457
+ term9(
3365
3458
  "slip-resistance",
3366
3459
  "Slip resistance",
3367
3460
  "The required measured resistance to pedestrian slipping for the application."
3368
3461
  ),
3369
- term8(
3462
+ term9(
3370
3463
  "wet-area-suitability",
3371
3464
  "Wet-area suitability",
3372
3465
  "Whether the product is evidenced as suitable for the stated wet exposure."
3373
3466
  ),
3374
- term8(
3467
+ term9(
3375
3468
  "fire-performance",
3376
3469
  "Fire performance",
3377
3470
  "The required reaction-to-fire or fire-resistance classification."
3378
3471
  ),
3379
- term8(
3472
+ term9(
3380
3473
  "acoustic-performance",
3381
3474
  "Acoustic performance",
3382
3475
  "The required sound absorption, insulation or impact-noise performance."
3383
3476
  ),
3384
- term8(
3477
+ term9(
3385
3478
  "maintenance",
3386
3479
  "Maintenance",
3387
3480
  "The allowed cleaning, renewal or routine care burden."
3388
3481
  ),
3389
- term8(
3482
+ term9(
3390
3483
  "installation-method",
3391
3484
  "Installation method",
3392
3485
  "A required or prohibited method of fixing, laying or applying the product."
3393
3486
  ),
3394
- term8(
3487
+ term9(
3395
3488
  "indoor-air-quality",
3396
3489
  "Indoor air quality",
3397
3490
  "A limit or certification concerning emissions into occupied indoor air."
3398
3491
  )
3399
3492
  ];
3400
3493
 
3494
+ // src/axes/season.ts
3495
+ var REVIEW_DATE3 = "2026-09-11";
3496
+ var AUTHORED5 = {
3497
+ basis: "authored",
3498
+ source: "@instruments/taxonomy ADR 0006"
3499
+ };
3500
+ var wikidata = (identifier, label) => ({
3501
+ identifier,
3502
+ label,
3503
+ match: "exact",
3504
+ scheme: "wikidata"
3505
+ });
3506
+ var term10 = (slug, label, definition, extra) => ({
3507
+ definition,
3508
+ introducedAt: REVIEW_DATE3,
3509
+ label,
3510
+ provenance: AUTHORED5,
3511
+ reviewedAt: REVIEW_DATE3,
3512
+ slug,
3513
+ ...extra
3514
+ });
3515
+ var SEASON_TERMS = [
3516
+ term10(
3517
+ "spring",
3518
+ "Spring",
3519
+ "The temperate season between winter and summer, when the days lengthen.",
3520
+ { external: [wikidata("Q1312", "spring")] }
3521
+ ),
3522
+ term10(
3523
+ "summer",
3524
+ "Summer",
3525
+ "The temperate season between spring and autumn, when the days are longest.",
3526
+ { external: [wikidata("Q1313", "summer")] }
3527
+ ),
3528
+ term10(
3529
+ "autumn",
3530
+ "Autumn",
3531
+ "The temperate season between summer and winter, when the days shorten.",
3532
+ { altLabels: ["fall"], external: [wikidata("Q1314", "autumn")] }
3533
+ ),
3534
+ term10(
3535
+ "winter",
3536
+ "Winter",
3537
+ "The temperate season between autumn and spring, when the days are shortest.",
3538
+ { external: [wikidata("Q1311", "winter")] }
3539
+ )
3540
+ ];
3541
+
3401
3542
  // src/axes/space/shared.ts
3402
3543
  var VENDORED_SNAPSHOT = "2026-08-21";
3403
- var DESIGNSHOP_SNAPSHOT = "2026-08-18";
3404
- var DESIGNSHOP_CORPUS = "designshop room schemes";
3544
+ var SCHEME_SNAPSHOT = "2026-08-18";
3545
+ var SCHEME_CORPUS = "room schemes in a furnishings retailer (src-03)";
3405
3546
  var aat2 = (slug, label, match) => ({
3406
3547
  identifier: slug,
3407
3548
  label,
@@ -3411,31 +3552,31 @@ var aat2 = (slug, label, match) => ({
3411
3552
  var MS_ROOM = {
3412
3553
  basis: "vendored",
3413
3554
  snapshot: VENDORED_SNAPSHOT,
3414
- source: "materialgraph ms_room"
3555
+ source: "ms_room, a commercial room dictionary in a materials-retrieval system (src-05)"
3415
3556
  };
3416
- var MS_ROOM_MIU = {
3557
+ var MS_ROOM_PROGRAM = {
3417
3558
  basis: "vendored",
3418
3559
  snapshot: VENDORED_SNAPSHOT,
3419
- source: "materialgraph ms_room + materialsinuse PROGRAM_SPACE_TYPES"
3560
+ source: "ms_room in a materials-retrieval system (src-05) and PROGRAM_SPACE_TYPES in a project-materials database (src-07)"
3420
3561
  };
3421
- var AUTHORED4 = {
3562
+ var AUTHORED6 = {
3422
3563
  basis: "authored",
3423
3564
  source: "@instruments/taxonomy ADR 0001"
3424
3565
  };
3425
3566
  var EVIDENCED = {
3426
3567
  basis: "evidenced",
3427
- snapshot: DESIGNSHOP_SNAPSHOT,
3428
- source: DESIGNSHOP_CORPUS
3568
+ snapshot: SCHEME_SNAPSHOT,
3569
+ source: SCHEME_CORPUS
3429
3570
  };
3430
- var designshopUsage = (band) => ({
3571
+ var schemeUsage = (band) => ({
3431
3572
  band,
3432
- corpus: DESIGNSHOP_CORPUS,
3433
- snapshot: DESIGNSHOP_SNAPSHOT
3573
+ corpus: SCHEME_CORPUS,
3574
+ snapshot: SCHEME_SNAPSHOT
3434
3575
  });
3435
- var MIU = {
3576
+ var PROGRAM_SPACES = {
3436
3577
  basis: "vendored",
3437
3578
  snapshot: VENDORED_SNAPSHOT,
3438
- source: "materialsinuse PROGRAM_SPACE_TYPES"
3579
+ source: "PROGRAM_SPACE_TYPES in a project-materials database (src-07)"
3439
3580
  };
3440
3581
  var relatedTo = (target) => ({
3441
3582
  predicate: "related-to",
@@ -3459,7 +3600,7 @@ var ARRIVAL_SPACES = [
3459
3600
  external: [aat2("300004263", "entrance halls", "exact")],
3460
3601
  label: "Entry / Foyer",
3461
3602
  note: "`vestibule` was carried as another name here in the 0.2 draft and is now a term of its own, because the spine carries it separately and the two are genuinely different rooms: a vestibule has two sets of doors and an entry does not. The word is kept under Seen in the wild because upstream data really does use it to mean this.",
3462
- provenance: MS_ROOM_MIU,
3603
+ provenance: MS_ROOM_PROGRAM,
3463
3604
  seenAs: ["vestibule"],
3464
3605
  slug: "entry"
3465
3606
  },
@@ -3469,14 +3610,14 @@ var ARRIVAL_SPACES = [
3469
3610
  definition: "A small enclosed volume between two sets of doors at an entrance, held there to break the draught and catch the dirt; the second set of doors is the test, and without them it is `entry`.",
3470
3611
  external: [aat2("300083076", "vestibules", "exact")],
3471
3612
  label: "Vestibule",
3472
- provenance: MIU,
3613
+ provenance: PROGRAM_SPACES,
3473
3614
  slug: "vestibule"
3474
3615
  },
3475
3616
  {
3476
3617
  definition: "The arrival and waiting volume of a building held in common by everyone who enters it: public, generally staffed, and passed through rather than settled into.",
3477
3618
  external: [aat2("300004264", "lobbies", "exact")],
3478
3619
  label: "Lobby",
3479
- provenance: MIU,
3620
+ provenance: PROGRAM_SPACES,
3480
3621
  slug: "lobby"
3481
3622
  },
3482
3623
  {
@@ -3492,7 +3633,7 @@ var ARRIVAL_SPACES = [
3492
3633
  broaderSlug: "lobby",
3493
3634
  definition: "The landing volume in front of a bank of lifts on any floor, where people stand still waiting rather than walk through; the shaft behind the doors is not a space.",
3494
3635
  label: "Lift Lobby",
3495
- provenance: MIU,
3636
+ provenance: PROGRAM_SPACES,
3496
3637
  slug: "elevator-lobby"
3497
3638
  },
3498
3639
  {
@@ -3502,14 +3643,14 @@ var ARRIVAL_SPACES = [
3502
3643
  aat2("300077176", "reception rooms", "close")
3503
3644
  ],
3504
3645
  label: "Reception",
3505
- provenance: MIU,
3646
+ provenance: PROGRAM_SPACES,
3506
3647
  slug: "reception"
3507
3648
  },
3508
3649
  {
3509
3650
  broaderSlug: "reception",
3510
3651
  definition: "The reception volume of a workplace, where visitors are received and held before being taken through security into the working floors.",
3511
3652
  label: "Workplace Reception",
3512
- provenance: MIU,
3653
+ provenance: PROGRAM_SPACES,
3513
3654
  related: [serves("workplace")],
3514
3655
  slug: "reception-workplace"
3515
3656
  },
@@ -3517,27 +3658,27 @@ var ARRIVAL_SPACES = [
3517
3658
  definition: "The staffed position in a hotel or residential building where guests are helped with onward arrangements, distinct from `check_in` by not being where the stay is registered.",
3518
3659
  label: "Concierge",
3519
3660
  note: "A furniture-defined zone rather than a bounded room: it is a desk and the volume a queue occupies in front of it. Kept because it is specified against - the desk, its surround and its floor are a distinct package - but read it as a zone, not a room.",
3520
- provenance: MIU,
3661
+ provenance: PROGRAM_SPACES,
3521
3662
  related: [serves("hospitality"), serves("residential")],
3522
3663
  slug: "concierge"
3523
3664
  },
3524
3665
  {
3525
3666
  definition: "The volume where a stay or an appointment is registered: a hotel front desk, a clinic reception counter, an airline desk and the queue in front of it.",
3526
3667
  label: "Check-In",
3527
- provenance: MIU,
3668
+ provenance: PROGRAM_SPACES,
3528
3669
  slug: "check-in"
3529
3670
  },
3530
3671
  {
3531
3672
  definition: "A seated volume where people wait for something to happen, open to the space around it rather than enclosed; enclose it and it becomes a waiting room in the sector that owns it.",
3532
3673
  external: [aat2("300004450", "waiting rooms", "close")],
3533
3674
  label: "Waiting Area",
3534
- provenance: MIU,
3675
+ provenance: PROGRAM_SPACES,
3535
3676
  slug: "waiting-area"
3536
3677
  },
3537
3678
  {
3538
3679
  definition: "The staffed control position at a building's entrance, where access is checked before anyone passes it; the volume is defined by the line it holds, not by its walls.",
3539
3680
  label: "Security Desk",
3540
- provenance: MIU,
3681
+ provenance: PROGRAM_SPACES,
3541
3682
  slug: "security-desk"
3542
3683
  },
3543
3684
  {
@@ -3545,20 +3686,20 @@ var ARRIVAL_SPACES = [
3545
3686
  definition: "The customer-facing sales office of a residential or commercial building, where tenancies are shown and signed; furnished to sell the building rather than to run it.",
3546
3687
  label: "Leasing Office",
3547
3688
  note: "Deliberately not a kind of `private_office`. A private office is held by one person or a small named group behind a door that shuts; a leasing office is a public-facing suite the point of which is that strangers walk into it. It is a workspace, and that is as far as the subsumption goes.",
3548
- provenance: MIU,
3689
+ provenance: PROGRAM_SPACES,
3549
3690
  slug: "leasing-office"
3550
3691
  },
3551
3692
  {
3552
3693
  definition: "A volume inside a commercial building given over to telling the occupier's or landlord's story rather than to transacting: display, no till, no stock.",
3553
3694
  label: "Brand Gallery",
3554
- provenance: MIU,
3695
+ provenance: PROGRAM_SPACES,
3555
3696
  slug: "brand-gallery"
3556
3697
  },
3557
3698
  {
3558
3699
  broaderSlug: "entry",
3559
3700
  definition: "The front door of a single dwelling inside a larger building - the flat door off the common landing - as opposed to the building's own `entry`.",
3560
3701
  label: "Unit Entry",
3561
- provenance: MIU,
3702
+ provenance: PROGRAM_SPACES,
3562
3703
  related: [serves("residential")],
3563
3704
  slug: "unit-entry"
3564
3705
  },
@@ -3566,7 +3707,7 @@ var ARRIVAL_SPACES = [
3566
3707
  definition: "The volume a person occupies in the act of crossing from one condition to another - outside to inside, public to private - where the floor build-up, the level and the light all change at once.",
3567
3708
  label: "Threshold",
3568
3709
  note: "The most zone-like term on the axis and the one most easily confused with an element. The sill you step over is `element.door` territory; this is the volume you stand in while you step over it. Where a scheme has a real room at that point, use `vestibule` or `entry` and leave this alone.",
3569
- provenance: MIU,
3710
+ provenance: PROGRAM_SPACES,
3570
3711
  slug: "threshold"
3571
3712
  },
3572
3713
  {
@@ -3574,7 +3715,7 @@ var ARRIVAL_SPACES = [
3574
3715
  definition: "A covered exterior volume against the face of a dwelling at its entrance, open on at least one side; roof it, wall it and glaze it and it becomes `conservatory`.",
3575
3716
  external: [aat2("300004132", "porches", "exact")],
3576
3717
  label: "Porch",
3577
- provenance: AUTHORED4,
3718
+ provenance: AUTHORED6,
3578
3719
  related: [serves("residential")],
3579
3720
  slug: "porch"
3580
3721
  },
@@ -3584,7 +3725,7 @@ var ARRIVAL_SPACES = [
3584
3725
  external: [aat2("300004143", "porte-coch\xE8res", "close")],
3585
3726
  label: "Porte-Coch\xE8re",
3586
3727
  note: "AAT scopes this as the projecting roof structure that does the sheltering, which by this axis's own boundary is an element. The term here is the volume under it, so the match is `close` and not `exact` - the same catch that downgraded `landing`.",
3587
- provenance: MIU,
3728
+ provenance: PROGRAM_SPACES,
3588
3729
  slug: "porte-cochere"
3589
3730
  }
3590
3731
  ];
@@ -3601,7 +3742,7 @@ var CIRCULATION_SPACES = [
3601
3742
  definition: "A circulation volume markedly longer than it is wide, whose only purpose is passage between other spaces.",
3602
3743
  external: [aat2("300004294", "corridors", "exact")],
3603
3744
  label: "Corridor",
3604
- provenance: MS_ROOM_MIU,
3745
+ provenance: MS_ROOM_PROGRAM,
3605
3746
  slug: "corridor"
3606
3747
  },
3607
3748
  {
@@ -3611,7 +3752,7 @@ var CIRCULATION_SPACES = [
3611
3752
  external: [aat2("300004420", "halls (interior rooms)", "close")],
3612
3753
  label: "Hallway",
3613
3754
  note: "The ISA edge holds on the load-bearing half of `corridor`: passage between other spaces. The parent's proportion clause - longer than it is wide - describes its central case rather than stating a necessary condition, and a generous furnished hall is still circulation. If that clause is ever tightened into a test, this edge comes out with it.",
3614
- provenance: AUTHORED4,
3755
+ provenance: AUTHORED6,
3615
3756
  related: [serves("residential")],
3616
3757
  slug: "hallway"
3617
3758
  },
@@ -3619,7 +3760,7 @@ var CIRCULATION_SPACES = [
3619
3760
  broaderSlug: "corridor",
3620
3761
  definition: "A circulation volume used by staff and goods rather than by the public, specified for trolley impact and washdown rather than for appearance.",
3621
3762
  label: "Service Corridor",
3622
- provenance: MIU,
3763
+ provenance: PROGRAM_SPACES,
3623
3764
  slug: "service-corridor"
3624
3765
  },
3625
3766
  {
@@ -3631,7 +3772,7 @@ var CIRCULATION_SPACES = [
3631
3772
  // element, not a space. Our `landing` is the volume a person stands in; AAT's is the thing they
3632
3773
  // stand on. A neat demonstration of the boundary rule catching a mapping that reads right.
3633
3774
  note: "AAT files landings as a stair component, which is the element sense. This term is the volume sense - the thing you stand on - so the match is `close` and not `exact`.",
3634
- provenance: MIU,
3775
+ provenance: PROGRAM_SPACES,
3635
3776
  slug: "landing"
3636
3777
  },
3637
3778
  {
@@ -3639,7 +3780,7 @@ var CIRCULATION_SPACES = [
3639
3780
  definition: "The vertical volume a stair occupies from floor to floor, including the void beside it; the stair itself is `element.stair`.",
3640
3781
  external: [aat2("300004324", "stairwells", "exact")],
3641
3782
  label: "Stairwell",
3642
- provenance: AUTHORED4,
3783
+ provenance: AUTHORED6,
3643
3784
  slug: "stairwell"
3644
3785
  },
3645
3786
  {
@@ -3647,27 +3788,27 @@ var CIRCULATION_SPACES = [
3647
3788
  definition: "The moving volume a lift passenger stands in, specified as a tiny room - floor, walls, ceiling, handrail - rather than as machinery; the shaft around it is not a space.",
3648
3789
  label: "Lift Cab",
3649
3790
  note: "Kept where `stair` and `escalator` were dropped, and the difference is the boundary test rather than a preference. You stand ON a stair and ON an escalator, and both are element territory. You stand IN a lift cab: it is a bounded volume with four surfaces and a ceiling, and every one of them gets specified.",
3650
- provenance: MIU,
3791
+ provenance: PROGRAM_SPACES,
3651
3792
  slug: "elevator-cab"
3652
3793
  },
3653
3794
  {
3654
3795
  definition: "An enclosed circulation volume spanning between two buildings or across a void, whose surfaces answer to movement and thermal exposure at once.",
3655
3796
  label: "Bridge / Link",
3656
- provenance: MIU,
3797
+ provenance: PROGRAM_SPACES,
3657
3798
  slug: "bridge"
3658
3799
  },
3659
3800
  {
3660
3801
  definition: "A tall top-lit volume rising through several storeys inside a building, around which the floors are arranged; the height and the light from above are the test, not the plan area.",
3661
3802
  external: [aat2("300080798", "atriums (interior spaces)", "exact")],
3662
3803
  label: "Atrium",
3663
- provenance: MIU,
3804
+ provenance: PROGRAM_SPACES,
3664
3805
  slug: "atrium"
3665
3806
  },
3666
3807
  {
3667
3808
  definition: "The volume at a decision point in a building's circulation, where signage, floor change and sightline are specified together to tell an arriving person which way to go.",
3668
3809
  label: "Wayfinding Zone",
3669
3810
  note: "A zone, not a room. It has no walls of its own - it is a stretch of `lobby` or `corridor` given a different specification because it has a job to do. Kept because that different specification is real and is drawn on plans.",
3670
- provenance: MIU,
3811
+ provenance: PROGRAM_SPACES,
3671
3812
  slug: "wayfinding-zone"
3672
3813
  },
3673
3814
  {
@@ -3675,7 +3816,7 @@ var CIRCULATION_SPACES = [
3675
3816
  definition: "An exterior pedestrian route through a site, laid and drained as a route rather than occupied; furnish it and sit in it and it becomes `terrace` or `plaza`.",
3676
3817
  external: [aat2("300008312", "walkways", "exact")],
3677
3818
  label: "Walkway",
3678
- provenance: MIU,
3819
+ provenance: PROGRAM_SPACES,
3679
3820
  slug: "walkway"
3680
3821
  }
3681
3822
  ];
@@ -3691,7 +3832,7 @@ var CIVIC_SPACES = [
3691
3832
  definition: "The room a court sits in, laid out by procedure: bench, bar, box, dock and public gallery in fixed relation, with sightline and audibility between them mandated rather than chosen.",
3692
3833
  external: [aat2("300004408", "courtrooms", "exact")],
3693
3834
  label: "Courtroom",
3694
- provenance: MIU,
3835
+ provenance: PROGRAM_SPACES,
3695
3836
  related: [serves("civic")],
3696
3837
  slug: "courtroom"
3697
3838
  },
@@ -3699,14 +3840,14 @@ var CIVIC_SPACES = [
3699
3840
  definition: "The room an elected body debates in, seated in the round or in opposing banks, with a public gallery and a fixed chair; the arrangement is constitutional, not spatial.",
3700
3841
  label: "Council Chamber",
3701
3842
  note: "No AAT mapping. Getty's `chambers (rooms)` (300458724) is a general term for a private room and its `assembly rooms` (300004393) is scoped to 18th-century social gatherings and balls. Neither is this. Searched and declined rather than forced.",
3702
- provenance: MIU,
3843
+ provenance: PROGRAM_SPACES,
3703
3844
  related: [serves("civic")],
3704
3845
  slug: "council-chamber"
3705
3846
  },
3706
3847
  {
3707
3848
  definition: "The staffed counter a public body is dealt with over, and the queueing and waiting volume in front of it; specified for security, accessibility and heavy unloved wear.",
3708
3849
  label: "Public Service Counter",
3709
- provenance: MIU,
3850
+ provenance: PROGRAM_SPACES,
3710
3851
  related: [serves("civic")],
3711
3852
  slug: "public-service-counter"
3712
3853
  }
@@ -3723,14 +3864,14 @@ var CULTURE_SPACES = [
3723
3864
  definition: "A raked or tiered volume holding an audience facing a stage or screen, where acoustics drive the surfaces.",
3724
3865
  external: [aat2("300004394", "auditoriums", "exact")],
3725
3866
  label: "Auditorium",
3726
- provenance: MS_ROOM_MIU,
3867
+ provenance: MS_ROOM_PROGRAM,
3727
3868
  slug: "auditorium"
3728
3869
  },
3729
3870
  {
3730
3871
  definition: "A performance room taken whole: the house, the stage and the fly tower over it, read as one volume because they share an acoustic and a fire strategy.",
3731
3872
  label: "Theatre",
3732
3873
  note: "Deliberately not a kind of `auditorium`, and the containment runs the other way - the auditorium is the audience chamber INSIDE a theatre. That is a part-of relation and not an ISA edge, so it is carried in `related` where part-of belongs. No AAT mapping: every Getty `theaters` entry is a building or an institution, which is TYPOLOGY's business.",
3733
- provenance: MIU,
3874
+ provenance: PROGRAM_SPACES,
3734
3875
  related: [relatedTo("space.auditorium")],
3735
3876
  slug: "theater"
3736
3877
  },
@@ -3738,21 +3879,21 @@ var CULTURE_SPACES = [
3738
3879
  definition: "The platform a performance is carried out on, visible to the audience; the floor takes scenery, trucking and dance, and nothing about it is specified for looking at.",
3739
3880
  external: [aat2("300004751", "stages (performance spaces)", "exact")],
3740
3881
  label: "Performance Stage",
3741
- provenance: MIU,
3882
+ provenance: PROGRAM_SPACES,
3742
3883
  slug: "performance-stage"
3743
3884
  },
3744
3885
  {
3745
3886
  definition: "The working volume immediately behind and beside a stage, where scenery, cabling and waiting performers are held in the dark.",
3746
3887
  external: [aat2("300252175", "backstages", "exact")],
3747
3888
  label: "Backstage",
3748
- provenance: MIU,
3889
+ provenance: PROGRAM_SPACES,
3749
3890
  slug: "backstage"
3750
3891
  },
3751
3892
  {
3752
3893
  definition: "The room performers wait and are received in before and after a show: soft, lit for faces, and the one room back of house specified for comfort.",
3753
3894
  external: [aat2("300100118", "green rooms", "exact")],
3754
3895
  label: "Green Room",
3755
- provenance: MIU,
3896
+ provenance: PROGRAM_SPACES,
3756
3897
  slug: "green-room"
3757
3898
  },
3758
3899
  {
@@ -3760,7 +3901,7 @@ var CULTURE_SPACES = [
3760
3901
  external: [aat2("300240057", "galleries (display spaces)", "exact")],
3761
3902
  label: "Gallery",
3762
3903
  note: "`typology.gallery` is the building; this is the room in it. As with `restaurant` and `bar`, the bare id repeats across axes deliberately and the prefix disambiguates.",
3763
- provenance: MIU,
3904
+ provenance: PROGRAM_SPACES,
3764
3905
  slug: "gallery"
3765
3906
  },
3766
3907
  {
@@ -3768,7 +3909,7 @@ var CULTURE_SPACES = [
3768
3909
  external: [aat2("300443548", "exhibition spaces", "close")],
3769
3910
  label: "Exhibition Hall",
3770
3911
  note: "Deliberately not a kind of `gallery`. A gallery is finished around a collection it keeps; an exhibition hall is a serviced shell whose whole value is that it is stripped and rebuilt several times a year. The finishes are opposites.",
3771
- provenance: MIU,
3912
+ provenance: PROGRAM_SPACES,
3772
3913
  slug: "exhibition-hall"
3773
3914
  },
3774
3915
  {
@@ -3794,7 +3935,7 @@ var DINING_SPACES = [
3794
3935
  external: [aat2("300005182", "restaurants", "exact")],
3795
3936
  label: "Restaurant",
3796
3937
  note: "`typology.restaurant` is the premises and this is the room in it. The bare id appears on both axes deliberately; the axis prefix is what keeps them apart, per ADR 0001.",
3797
- provenance: MS_ROOM_MIU,
3938
+ provenance: MS_ROOM_PROGRAM,
3798
3939
  related: [serves("hospitality")],
3799
3940
  seenAs: ["restaurant_dining_room"],
3800
3941
  slug: "restaurant"
@@ -3808,13 +3949,13 @@ var DINING_SPACES = [
3808
3949
  related: [serves("residential")],
3809
3950
  seenAs: ["Dining Room"],
3810
3951
  slug: "dining-room",
3811
- usage: designshopUsage("common")
3952
+ usage: schemeUsage("common")
3812
3953
  },
3813
3954
  {
3814
3955
  definition: "An enclosed dining volume let or reserved as a whole, off a restaurant, club or hotel; the door that shuts is the point, and the party inside it is not sharing the room.",
3815
3956
  label: "Private Dining",
3816
3957
  note: "Deliberately not a kind of `restaurant`. `restaurant` is defined as the PUBLIC dining volume, and a private dining room is defined by not being public. Drawing the edge would make the parent's own boundary clause false of half its children.",
3817
- provenance: MIU,
3958
+ provenance: PROGRAM_SPACES,
3818
3959
  related: [serves("hospitality")],
3819
3960
  slug: "private-dining"
3820
3961
  },
@@ -3822,27 +3963,27 @@ var DINING_SPACES = [
3822
3963
  definition: "A volume whose centre is a serving counter for drink, where people stand or perch as readily as they sit; the fitted counter itself is millwork, not this.",
3823
3964
  label: "Bar",
3824
3965
  note: "Three axes carry a `bar` and they are three different things: `space.bar` is the room, `typology.bar` is the premises, and `application.bar` is a piece of millwork. No AAT mapping is carried, because AAT's `taverns` (300005207) is scoped to 17th- to early 19th-century establishments and `bars` in AAT are medal ribbons and metal stock. Checked, not skipped.",
3825
- provenance: MIU,
3966
+ provenance: PROGRAM_SPACES,
3826
3967
  slug: "bar"
3827
3968
  },
3828
3969
  {
3829
3970
  definition: "The working volume behind a bar counter, where the staff stand and the bottle display sits; separated from `bar` by which side of the counter it is on.",
3830
3971
  label: "Back Bar",
3831
- provenance: MIU,
3972
+ provenance: PROGRAM_SPACES,
3832
3973
  slug: "back-bar"
3833
3974
  },
3834
3975
  {
3835
3976
  definition: "A small eating and drinking volume with a limited menu, served at a counter or at tables, and occupied for a short sitting rather than a meal.",
3836
3977
  external: [aat2("300005187", "coffee shops", "close")],
3837
3978
  label: "Caf\xE9",
3838
- provenance: MIU,
3979
+ provenance: PROGRAM_SPACES,
3839
3980
  slug: "cafe"
3840
3981
  },
3841
3982
  {
3842
3983
  broaderSlug: "cafe",
3843
3984
  definition: "A caf\xE9 narrowed to coffee and led by its counter, where the machine is the focal point and the seating is secondary.",
3844
3985
  label: "Coffee Bar",
3845
- provenance: MIU,
3986
+ provenance: PROGRAM_SPACES,
3846
3987
  slug: "coffee-bar"
3847
3988
  },
3848
3989
  {
@@ -3859,34 +4000,34 @@ var DINING_SPACES = [
3859
4000
  ],
3860
4001
  label: "Cafeteria",
3861
4002
  note: "Deliberately not a kind of `restaurant`. A school cafeteria is not the dining volume of a food business, which is what `restaurant` says. What they share is a servery and a seated hall, and shared parts do not make an ISA edge.",
3862
- provenance: MIU,
4003
+ provenance: PROGRAM_SPACES,
3863
4004
  related: [serves("workplace"), serves("education"), serves("healthcare")],
3864
4005
  slug: "cafeteria"
3865
4006
  },
3866
4007
  {
3867
4008
  definition: "A hall of independent food counters sharing one seated floor, where the seating belongs to the building and the kitchens do not.",
3868
4009
  label: "Food Hall",
3869
- provenance: MIU,
4010
+ provenance: PROGRAM_SPACES,
3870
4011
  slug: "food-hall"
3871
4012
  },
3872
4013
  {
3873
4014
  definition: "The run of fixed upholstered seating against a wall in an eating or drinking room, taken with the tables in front of it.",
3874
4015
  label: "Banquette Zone",
3875
4016
  note: "A furniture-defined zone rather than a room. It is here because the banquette is specified, upholstered, fire-rated and detailed as a package, and a scheme really does carry it as a named area on a plan.",
3876
- provenance: MIU,
4017
+ provenance: PROGRAM_SPACES,
3877
4018
  slug: "banquette-zone"
3878
4019
  },
3879
4020
  {
3880
4021
  definition: "The area of a dining or working room organised around a single long shared table, where strangers sit together by design.",
3881
4022
  label: "Communal Table",
3882
4023
  note: "Names a piece of furniture and the volume around it, which is the weakest shape a term on this axis can have. Retained because the spine carries it and because the acoustic and lighting treatment above a communal table is genuinely its own specification. If it is ever split, the table belongs somewhere other than SPACE.",
3883
- provenance: MIU,
4024
+ provenance: PROGRAM_SPACES,
3884
4025
  slug: "communal-table"
3885
4026
  },
3886
4027
  {
3887
4028
  definition: "The service volume where food is laid out to be taken by the person eating it, hot and cold; specified for spillage, queueing and standing wear.",
3888
4029
  label: "Buffet Area",
3889
- provenance: MIU,
4030
+ provenance: PROGRAM_SPACES,
3890
4031
  slug: "buffet-area"
3891
4032
  },
3892
4033
  {
@@ -3894,24 +4035,24 @@ var DINING_SPACES = [
3894
4035
  external: [aat2("300004514", "kitchens", "exact")],
3895
4036
  label: "Kitchen",
3896
4037
  note: "`application.kitchen` in the published APPLICATIONS axis is a room sitting inside a surface-use vocabulary, and is superseded by this term. As with `bathroom`, the edge is `related-to` rather than `suitable-for`, because the suitability claim runs from the material to the space and so belongs on the applications side.",
3897
- provenance: MS_ROOM_MIU,
4038
+ provenance: MS_ROOM_PROGRAM,
3898
4039
  related: [relatedTo("application.kitchen")],
3899
4040
  seenAs: ["Kitchen"],
3900
4041
  slug: "kitchen",
3901
- usage: designshopUsage("dominant")
4042
+ usage: schemeUsage("dominant")
3902
4043
  },
3903
4044
  {
3904
4045
  broaderSlug: "kitchen",
3905
4046
  definition: "A kitchen run as a production line rather than as a room in a home: stainless throughout, drained floor, extract-led, and specified against health regulation before appearance.",
3906
4047
  label: "Commercial Kitchen",
3907
- provenance: MIU,
4048
+ provenance: PROGRAM_SPACES,
3908
4049
  slug: "commercial-kitchen"
3909
4050
  },
3910
4051
  {
3911
4052
  broaderSlug: "commercial-kitchen",
3912
4053
  definition: "A commercial kitchen deliberately open to the room it serves, so that it is finished on two standards at once - hygiene behind the pass, appearance in front of it.",
3913
4054
  label: "Display Kitchen",
3914
- provenance: MIU,
4055
+ provenance: PROGRAM_SPACES,
3915
4056
  slug: "display-kitchen"
3916
4057
  },
3917
4058
  {
@@ -3919,7 +4060,7 @@ var DINING_SPACES = [
3919
4060
  external: [aat2("300004499", "pantries", "exact")],
3920
4061
  label: "Pantry",
3921
4062
  note: "AAT's `larders` (300004498) was carried here at `close` in the 0.2 draft and has moved to the `larder` term, where it is `exact`. The id is not lost - it is filed against the concept it actually names.",
3922
- provenance: MS_ROOM_MIU,
4063
+ provenance: MS_ROOM_PROGRAM,
3923
4064
  related: [serves("residential")],
3924
4065
  slug: "pantry"
3925
4066
  },
@@ -3928,7 +4069,7 @@ var DINING_SPACES = [
3928
4069
  definition: "The cold end of a pantry: an unheated, ventilated store for perishables, north-facing by tradition and stone-shelved. Every larder is a pantry; a warm dry-goods cupboard is not a larder.",
3929
4070
  external: [aat2("300004498", "larders", "exact")],
3930
4071
  label: "Larder",
3931
- provenance: AUTHORED4,
4072
+ provenance: AUTHORED6,
3932
4073
  slug: "larder"
3933
4074
  },
3934
4075
  {
@@ -3936,13 +4077,13 @@ var DINING_SPACES = [
3936
4077
  external: [aat2("300004523", "sculleries", "exact")],
3937
4078
  label: "Scullery",
3938
4079
  note: "Deliberately not a kind of `kitchen`. The parent is defined by preparing and cooking food, and a scullery is defined by the cooking happening next door. In current British practice the word has been reclaimed for the working half of a two-part kitchen, which is the same room by the same test.",
3939
- provenance: AUTHORED4,
4080
+ provenance: AUTHORED6,
3940
4081
  slug: "scullery"
3941
4082
  },
3942
4083
  {
3943
4084
  definition: "A conditioned volume for storing and showing wine in a hospitality setting, glazed to be looked into and often dined in; the domestic below-ground store is `wine_cellar`.",
3944
4085
  label: "Wine Room",
3945
- provenance: MIU,
4086
+ provenance: PROGRAM_SPACES,
3946
4087
  related: [serves("hospitality")],
3947
4088
  slug: "wine-room"
3948
4089
  },
@@ -3950,7 +4091,7 @@ var DINING_SPACES = [
3950
4091
  broaderSlug: "outdoor",
3951
4092
  definition: "An exterior volume laid out for seated eating, with the service run, the shelter and the floor specified for it; a terrace with tables on it once a year is `terrace`.",
3952
4093
  label: "Outdoor Dining",
3953
- provenance: MIU,
4094
+ provenance: PROGRAM_SPACES,
3954
4095
  slug: "outdoor-dining"
3955
4096
  }
3956
4097
  ];
@@ -3961,7 +4102,7 @@ var DOMESTIC_SPACES = [
3961
4102
  // The depth the spine does not have. `PROGRAM_SPACE_TYPES` is a commercial program vocabulary
3962
4103
  // and carries fourteen residential values out of 172, which is why it cannot be used unaltered
3963
4104
  // for the work this package is for. These are the rooms a British house has that no commercial
3964
- // brief ever asks for, and DesignShop's captured room schemes evidence the ones that carry a
4105
+ // brief ever asks for, and a furnishings retailer's captured room schemes evidence the ones that carry a
3965
4106
  // usage band. Two of them - `conservatory` and `orangery` - are glazed and are still interior
3966
4107
  // rooms, which is why they are not under `outdoor`.
3967
4108
  {
@@ -3976,25 +4117,25 @@ var DOMESTIC_SPACES = [
3976
4117
  related: [serves("residential")],
3977
4118
  seenAs: ["Laundry Room", "laundry_room"],
3978
4119
  slug: "utility-room",
3979
- usage: designshopUsage("common")
4120
+ usage: schemeUsage("common")
3980
4121
  },
3981
4122
  {
3982
4123
  altLabels: ["mudroom", "mud room"],
3983
4124
  definition: "A transitional volume between outside and inside where wet outdoor clothing and footwear come off and are stored; distinguished from `entry` by being the working door rather than the front one.",
3984
4125
  external: [aat2("300004281", "mud rooms", "exact")],
3985
4126
  label: "Boot Room",
3986
- note: "`Mudroom` and `Mud Room` are both listed under Seen in the wild because DesignShop spells it one way on the scheme side and the other on the product side. Neither spelling is wrong; both are observed, and a crosswalk that hid one could not clean the data. The spine's own `mudroom` joins them.",
4127
+ note: "`Mudroom` and `Mud Room` are both listed under Seen in the wild because the furnishings retailer spells it one way on the scheme side and the other on the product side. Neither spelling is wrong; both are observed, and a crosswalk that hid one could not clean the data. The spine's own `mudroom` joins them.",
3987
4128
  provenance: EVIDENCED,
3988
4129
  seenAs: ["Mudroom", "Mud Room", "mudroom"],
3989
4130
  slug: "boot-room",
3990
- usage: designshopUsage("occasional")
4131
+ usage: schemeUsage("occasional")
3991
4132
  },
3992
4133
  {
3993
4134
  definition: "A room near an entrance where outdoor coats, hats and bags are left for the length of a visit; storage for garments, with no sanitary fitting in it.",
3994
4135
  external: [aat2("300004471", "cloakrooms", "exact")],
3995
4136
  label: "Cloakroom",
3996
4137
  note: 'In British domestic usage "cloakroom" means the downstairs lavatory, and that sense is recorded in `wc`\'s Seen in the wild. The id is given to the coat room because that is the sense AAT files under the word and the sense a public building means by it, and because `wc` already has a name of its own. Two live senses, one id each, and both reachable.',
3997
- provenance: AUTHORED4,
4138
+ provenance: AUTHORED6,
3998
4139
  slug: "cloakroom"
3999
4140
  },
4000
4141
  {
@@ -4005,7 +4146,7 @@ var DOMESTIC_SPACES = [
4005
4146
  aat2("300004179", "solariums (building spaces)", "close")
4006
4147
  ],
4007
4148
  label: "Conservatory",
4008
- provenance: AUTHORED4,
4149
+ provenance: AUTHORED6,
4009
4150
  related: [serves("residential")],
4010
4151
  slug: "conservatory"
4011
4152
  },
@@ -4014,7 +4155,7 @@ var DOMESTIC_SPACES = [
4014
4155
  external: [aat2("300006804", "orangeries", "close")],
4015
4156
  label: "Orangery",
4016
4157
  note: "Deliberately not a kind of `conservatory`. The parent's test is a glazed roof, and an orangery's roof is solid but for its lantern - which is exactly why it holds heat and can be used in February when a conservatory cannot. AAT is `close` rather than `exact` for the opposite reason: Getty scopes orangeries historically, as heated greenhouses for overwintering citrus, and the term here is the modern room.",
4017
- provenance: AUTHORED4,
4158
+ provenance: AUTHORED6,
4018
4159
  related: [serves("residential")],
4019
4160
  slug: "orangery"
4020
4161
  },
@@ -4022,7 +4163,7 @@ var DOMESTIC_SPACES = [
4022
4163
  definition: "The enclosed volume under a pitched roof above the top storey, whether floored for use or left for storage; the sloping ceiling is what makes it this rather than a room.",
4023
4164
  external: [aat2("300004076", "attics (interior spaces)", "exact")],
4024
4165
  label: "Attic",
4025
- provenance: AUTHORED4,
4166
+ provenance: AUTHORED6,
4026
4167
  slug: "attic"
4027
4168
  },
4028
4169
  {
@@ -4030,7 +4171,7 @@ var DOMESTIC_SPACES = [
4030
4171
  external: [aat2("300004759", "cellars (storerooms)", "close")],
4031
4172
  label: "Cellar",
4032
4173
  note: "AAT is `close` rather than `exact` because Getty's scope note pushes utility and living uses over to `basements`, and the term here keeps the store sense only. This axis has no term for a converted habitable basement yet; that is a declared gap, and it should be one term rather than a widening of this one.",
4033
- provenance: AUTHORED4,
4174
+ provenance: AUTHORED6,
4034
4175
  related: [serves("residential")],
4035
4176
  slug: "cellar"
4036
4177
  },
@@ -4039,7 +4180,7 @@ var DOMESTIC_SPACES = [
4039
4180
  definition: "A cellar given over to storing wine, held at a steady low temperature and high humidity, racked and dark. A conditioned wine store above ground is `wine_room`.",
4040
4181
  external: [aat2("300004762", "wine cellars", "exact")],
4041
4182
  label: "Wine Cellar",
4042
- provenance: AUTHORED4,
4183
+ provenance: AUTHORED6,
4043
4184
  slug: "wine-cellar"
4044
4185
  },
4045
4186
  {
@@ -4074,33 +4215,34 @@ var FITNESS_SPACES = [
4074
4215
  broaderSlug: "gym",
4075
4216
  definition: "The equipment floor of a gym: racks, machines and free weights on a floor built for the worst thing that can be dropped on it.",
4076
4217
  label: "Fitness Floor",
4077
- provenance: MIU,
4218
+ provenance: PROGRAM_SPACES,
4078
4219
  slug: "fitness-floor"
4079
4220
  },
4080
4221
  {
4081
4222
  definition: "A clear matted room for mat-based practice, quiet, warm and specified for bare feet rather than for impact.",
4082
4223
  label: "Yoga Studio",
4083
4224
  note: "Deliberately not a kind of `gym`. The parent turns on dropped and repeated impact loading and nothing is dropped in here; the floor build-up, the acoustic and the lighting all go the other way. Neighbours in a brief, opposites in a specification.",
4084
- provenance: MIU,
4225
+ provenance: PROGRAM_SPACES,
4085
4226
  slug: "yoga-studio"
4086
4227
  },
4087
4228
  {
4088
4229
  definition: "A studio built around reformer machines, which are fixed, loaded and set out on a grid, so the floor is specified for anchorage rather than for impact.",
4089
4230
  label: "Pilates Studio",
4090
4231
  note: "Refused the `gym` edge for the same reason as `yoga_studio`, and kept separate from it because the fixed equipment changes the room: reformers are bolted or ballasted, and a yoga studio is deliberately empty.",
4091
- provenance: MIU,
4232
+ provenance: PROGRAM_SPACES,
4092
4233
  slug: "pilates-studio"
4093
4234
  },
4094
4235
  {
4095
4236
  definition: "A small room held quiet and low-lit for prayer, meditation or simply stopping, with no fixed use imposed on it.",
4096
4237
  external: [aat2("300266397", "meditation rooms", "exact")],
4097
4238
  label: "Meditation Room",
4098
- provenance: MIU,
4239
+ provenance: PROGRAM_SPACES,
4099
4240
  slug: "meditation-room"
4100
4241
  }
4101
4242
  ];
4102
4243
 
4103
4244
  // src/axes/space/gathering.ts
4245
+ var LIVING_ROOM = "living-room";
4104
4246
  var GATHERING_SPACES = [
4105
4247
  // ─── Sitting and gathering ──────────────────────────────────────────────────────────────────
4106
4248
  // The spine's largest single block, and the one where the near-synonym rule earns its keep. Nine
@@ -4116,43 +4258,51 @@ var GATHERING_SPACES = [
4116
4258
  external: [aat2("300004435", "living rooms", "exact")],
4117
4259
  label: "Living Room",
4118
4260
  note: "The domestic half of the lounge / living-room pair. `lounge` is the correct consumer name for this room in British usage and is carried as another name for it; the term id `lounge` is held for the commercial homonym, because that is the sense both upstream dictionaries file it under. `living_area` - the sitting end of an open-plan flat - folds in here rather than becoming a term, since nothing about the surfaces changes when the walls come out.",
4119
- provenance: MS_ROOM_MIU,
4261
+ provenance: MS_ROOM_PROGRAM,
4120
4262
  related: [serves("residential")],
4121
4263
  seenAs: ["Living Room", "living_area"],
4122
- slug: "living-room",
4123
- usage: designshopUsage("common")
4264
+ slug: LIVING_ROOM,
4265
+ usage: schemeUsage("common")
4124
4266
  },
4125
4267
  {
4126
4268
  altLabels: ["den"],
4127
- broaderSlug: "living-room",
4269
+ broaderSlug: LIVING_ROOM,
4128
4270
  definition: "A small, enclosed and deliberately low-lit sitting volume held as a retreat from the main `living_room`, rather than as a substitute for it.",
4129
4271
  external: [
4130
4272
  aat2("300004416", "dens (rooms)", "close"),
4131
4273
  aat2("300081958", "sitting rooms", "broad")
4132
4274
  ],
4133
4275
  label: "Snug",
4134
- provenance: AUTHORED4,
4276
+ provenance: AUTHORED6,
4135
4277
  slug: "snug"
4136
4278
  },
4279
+ {
4280
+ broaderSlug: LIVING_ROOM,
4281
+ definition: "A formal sitting volume kept for receiving guests, held apart from the household's everyday `living_room` and finished to be seen rather than lived in. British usage, and the reason it is a term rather than another name for `living_room`: a house with both uses them differently.",
4282
+ label: "Drawing Room",
4283
+ provenance: AUTHORED6,
4284
+ seenAs: ["Drawing Room", "drawing room"],
4285
+ slug: "drawing-room"
4286
+ },
4137
4287
  {
4138
4288
  definition: "A soft-seated volume for waiting or informal use in a commercial setting; separated from `hospitality_lobby` by being sat in rather than passed through.",
4139
4289
  external: [aat2("300004436", "lounges (sitting rooms)", "close")],
4140
4290
  label: "Lounge",
4141
- provenance: MS_ROOM_MIU,
4291
+ provenance: MS_ROOM_PROGRAM,
4142
4292
  slug: "lounge"
4143
4293
  },
4144
4294
  {
4145
4295
  broaderSlug: "lounge",
4146
4296
  definition: "A lounge whose use is restricted to a paying membership, specified upward accordingly: the restriction is the point, and it is what the finishes are answering.",
4147
4297
  label: "Members' Lounge",
4148
- provenance: MIU,
4298
+ provenance: PROGRAM_SPACES,
4149
4299
  slug: "members-lounge"
4150
4300
  },
4151
4301
  {
4152
4302
  broaderSlug: "lounge",
4153
4303
  definition: "A shared lounge in a residential building, for the use of its tenants and their guests; domestic in feel and contract in specification.",
4154
4304
  label: "Resident Lounge",
4155
- provenance: MIU,
4305
+ provenance: PROGRAM_SPACES,
4156
4306
  related: [serves("residential")],
4157
4307
  slug: "resident-lounge"
4158
4308
  },
@@ -4160,7 +4310,7 @@ var GATHERING_SPACES = [
4160
4310
  broaderSlug: "lounge",
4161
4311
  definition: "A lounge in a school or university given to students between classes, where the wear is heavy, constant and unsupervised.",
4162
4312
  label: "Student Lounge",
4163
- provenance: MIU,
4313
+ provenance: PROGRAM_SPACES,
4164
4314
  related: [serves("education")],
4165
4315
  slug: "student-lounge"
4166
4316
  },
@@ -4168,14 +4318,14 @@ var GATHERING_SPACES = [
4168
4318
  broaderSlug: "lounge",
4169
4319
  definition: "The soft-seated end of a library or learning space, where reading happens off a chair rather than at a table; the tabled part of the same room is `reading_room`.",
4170
4320
  label: "Library Lounge",
4171
- provenance: MIU,
4321
+ provenance: PROGRAM_SPACES,
4172
4322
  slug: "library-lounge"
4173
4323
  },
4174
4324
  {
4175
4325
  broaderSlug: "lounge",
4176
4326
  definition: "A lounge in a hospital or care setting where a patient's family waits, sits with them, or receives news; specified for long occupation under strain, and cleanable throughout.",
4177
4327
  label: "Family Lounge",
4178
- provenance: MIU,
4328
+ provenance: PROGRAM_SPACES,
4179
4329
  related: [serves("healthcare")],
4180
4330
  slug: "family-lounge"
4181
4331
  },
@@ -4183,7 +4333,7 @@ var GATHERING_SPACES = [
4183
4333
  broaderSlug: "lounge",
4184
4334
  definition: "A lounge for clinical or hospitality staff to take a break out of sight of the people they serve; the being-out-of-sight is the requirement, not a side effect.",
4185
4335
  label: "Staff Respite",
4186
- provenance: MIU,
4336
+ provenance: PROGRAM_SPACES,
4187
4337
  related: [serves("healthcare"), serves("hospitality")],
4188
4338
  slug: "staff-respite"
4189
4339
  },
@@ -4191,14 +4341,14 @@ var GATHERING_SPACES = [
4191
4341
  broaderSlug: "lounge",
4192
4342
  definition: "The lounge a spa or clinic guest occupies after a treatment, held quiet and warm; distinguished from `spa_treatment_room` by nothing being done to anyone in it.",
4193
4343
  label: "Recovery Lounge",
4194
- provenance: MIU,
4344
+ provenance: PROGRAM_SPACES,
4195
4345
  slug: "recovery-lounge"
4196
4346
  },
4197
4347
  {
4198
4348
  broaderSlug: "lounge",
4199
4349
  definition: "Soft seating placed off a working floor for unscheduled conversation and short escapes from a desk; open to the floor, which is what separates it from `meeting_room`.",
4200
4350
  label: "Breakout Area",
4201
- provenance: MIU,
4351
+ provenance: PROGRAM_SPACES,
4202
4352
  slug: "breakout-area"
4203
4353
  },
4204
4354
  {
@@ -4206,7 +4356,7 @@ var GATHERING_SPACES = [
4206
4356
  definition: "A lounge on a roof, where the seating and the view are the point and the weather is a specification problem rather than a feature.",
4207
4357
  label: "Roof Lounge",
4208
4358
  note: "Filed under `lounge` rather than under `outdoor`, and only one of those can be the parent. The lounge-ness is what gets specified - the seating, the lighting, the way it is used - and being outdoors is a condition applied to it. The same call is made on `outdoor_lounge`.",
4209
- provenance: MIU,
4359
+ provenance: PROGRAM_SPACES,
4210
4360
  related: [relatedTo("space.roof-deck")],
4211
4361
  slug: "roof-lounge"
4212
4362
  },
@@ -4214,7 +4364,7 @@ var GATHERING_SPACES = [
4214
4364
  broaderSlug: "lounge",
4215
4365
  definition: "A furnished exterior sitting volume treated as a room: soft seating, lighting and a defined edge, specified against weather rather than against footfall.",
4216
4366
  label: "Outdoor Lounge",
4217
- provenance: MIU,
4367
+ provenance: PROGRAM_SPACES,
4218
4368
  related: [relatedTo("space.outdoor")],
4219
4369
  slug: "outdoor-lounge"
4220
4370
  },
@@ -4222,14 +4372,14 @@ var GATHERING_SPACES = [
4222
4372
  definition: "A shared amenity room in a residential or membership building for its occupants' own activities - games, parties, meetings - booked rather than dropped into.",
4223
4373
  label: "Clubroom",
4224
4374
  note: "Deliberately not a kind of `lounge`. A lounge is soft-seated and dropped into; a clubroom is booked, tabled, and expected to take a party. The two are neighbours in every brief and they are not the same room, which is why folding them would lose a real difference in floor build-up and acoustic treatment.",
4225
- provenance: MIU,
4375
+ provenance: PROGRAM_SPACES,
4226
4376
  slug: "clubroom"
4227
4377
  },
4228
4378
  {
4229
4379
  definition: "The seating group gathered on a hearth, specified as a unit: the fire opening, its surround, the hearth in front of it and the furniture arranged at it.",
4230
4380
  label: "Fireplace Area",
4231
4381
  note: "A zone inside another room rather than a room, and deliberately not a child of `living_room` - it occurs in lobbies, lounges and bars as readily as in dwellings. The fire opening and chimneypiece themselves are `element.fireplace` and `element.chimneypiece`; this is the volume in front of them.",
4232
- provenance: MIU,
4382
+ provenance: PROGRAM_SPACES,
4233
4383
  related: [relatedTo("element.fireplace")],
4234
4384
  slug: "fireplace-area"
4235
4385
  },
@@ -4237,14 +4387,14 @@ var GATHERING_SPACES = [
4237
4387
  definition: "A room given over to table games - pool, cards, table tennis - where the floor and the clearances are set by the tables in it.",
4238
4388
  external: [aat2("300004452", "game rooms", "close")],
4239
4389
  label: "Game Room",
4240
- provenance: MIU,
4390
+ provenance: PROGRAM_SPACES,
4241
4391
  slug: "game-room"
4242
4392
  },
4243
4393
  {
4244
4394
  definition: "A domestic room built around a screen and a sound system, where the acoustic treatment and the ability to black it out drive every surface in it.",
4245
4395
  external: [aat2("300179305", "media rooms", "exact")],
4246
4396
  label: "Media Room",
4247
- provenance: AUTHORED4,
4397
+ provenance: AUTHORED6,
4248
4398
  related: [serves("residential")],
4249
4399
  slug: "media-room"
4250
4400
  },
@@ -4252,14 +4402,14 @@ var GATHERING_SPACES = [
4252
4402
  definition: "A domestic room given to children's play and its storage, specified for spillage, impact and rearrangement; a bed in it makes it `nursery` or `bedroom` instead.",
4253
4403
  external: [aat2("300004457", "playrooms", "exact")],
4254
4404
  label: "Playroom",
4255
- provenance: AUTHORED4,
4405
+ provenance: AUTHORED6,
4256
4406
  related: [serves("residential")],
4257
4407
  slug: "playroom"
4258
4408
  },
4259
4409
  {
4260
4410
  definition: "A bookable room in a civic or residential building lent to whoever needs it - classes, meetings, parties - and therefore specified for no single use and all of them.",
4261
4411
  label: "Community Room",
4262
- provenance: MIU,
4412
+ provenance: PROGRAM_SPACES,
4263
4413
  related: [serves("civic"), serves("residential")],
4264
4414
  slug: "community-room"
4265
4415
  }
@@ -4285,7 +4435,7 @@ var HEALTHCARE_SPACES = [
4285
4435
  {
4286
4436
  definition: "A single-patient consulting and examination volume inside a clinic or practice, with no overnight provision.",
4287
4437
  label: "Exam Room",
4288
- provenance: MS_ROOM_MIU,
4438
+ provenance: MS_ROOM_PROGRAM,
4289
4439
  related: [serves("healthcare")],
4290
4440
  slug: "exam-room"
4291
4441
  },
@@ -4295,7 +4445,7 @@ var HEALTHCARE_SPACES = [
4295
4445
  external: [aat2("300411486", "surgeries (health facilities)", "exact")],
4296
4446
  label: "Consult Room",
4297
4447
  note: "See `consultation_room`, which is one character away and is the retail term. Getty's `surgeries (health facilities)` is the British sense of a GP's room and matches this exactly, which is a useful check that the term is real rather than a program-brief coinage.",
4298
- provenance: MIU,
4448
+ provenance: PROGRAM_SPACES,
4299
4449
  related: [serves("healthcare")],
4300
4450
  slug: "consult-room"
4301
4451
  },
@@ -4303,7 +4453,7 @@ var HEALTHCARE_SPACES = [
4303
4453
  definition: "A clinical room for interventions done under local anaesthetic, cleaned and drained to a clinical standard but without an operating theatre's air pressure regime.",
4304
4454
  label: "Procedure Room",
4305
4455
  note: "Deliberately not a kind of `operating_room`. The parent turns on controlled air pressure and full asepsis, and the absence of both is what makes this a different room with a different cost. Grading these two together would be the most consequential wrong edge available on this axis.",
4306
- provenance: MIU,
4456
+ provenance: PROGRAM_SPACES,
4307
4457
  related: [serves("healthcare")],
4308
4458
  slug: "procedure-room"
4309
4459
  },
@@ -4312,21 +4462,21 @@ var HEALTHCARE_SPACES = [
4312
4462
  definition: "A surgical volume held under controlled air pressure and full asepsis.",
4313
4463
  external: [aat2("300004557", "operating rooms", "exact")],
4314
4464
  label: "Operating Room",
4315
- provenance: MS_ROOM_MIU,
4465
+ provenance: MS_ROOM_PROGRAM,
4316
4466
  related: [serves("healthcare")],
4317
4467
  slug: "operating-room"
4318
4468
  },
4319
4469
  {
4320
4470
  definition: "A room for rehabilitative or psychological therapy, where privacy, acoustic separation and a non-clinical feel are specified together against a cleanable substrate.",
4321
4471
  label: "Therapy Room",
4322
- provenance: MIU,
4472
+ provenance: PROGRAM_SPACES,
4323
4473
  related: [serves("healthcare")],
4324
4474
  slug: "therapy-room"
4325
4475
  },
4326
4476
  {
4327
4477
  definition: "A room built around a scanner, where the shielding, the structural load and the control position determine the room before any finish is chosen.",
4328
4478
  label: "Imaging Room",
4329
- provenance: MIU,
4479
+ provenance: PROGRAM_SPACES,
4330
4480
  related: [serves("healthcare")],
4331
4481
  slug: "imaging-room"
4332
4482
  },
@@ -4334,7 +4484,7 @@ var HEALTHCARE_SPACES = [
4334
4484
  definition: "The staffed position a ward or department is run from, with sightlines to the rooms it watches; a counter, its back-of-house and the volume around them.",
4335
4485
  external: [aat2("300082114", "nurses' stations", "exact")],
4336
4486
  label: "Nurse Station",
4337
- provenance: MIU,
4487
+ provenance: PROGRAM_SPACES,
4338
4488
  related: [serves("healthcare")],
4339
4489
  slug: "nurse-station"
4340
4490
  },
@@ -4343,7 +4493,7 @@ var HEALTHCARE_SPACES = [
4343
4493
  definition: "The waiting volume of a clinical department, specified for long occupation, infection control and people who would rather be elsewhere.",
4344
4494
  external: [aat2("300004450", "waiting rooms", "close")],
4345
4495
  label: "Waiting Room (Healthcare)",
4346
- provenance: MIU,
4496
+ provenance: PROGRAM_SPACES,
4347
4497
  related: [serves("healthcare")],
4348
4498
  slug: "waiting-room-healthcare"
4349
4499
  },
@@ -4352,7 +4502,7 @@ var HEALTHCARE_SPACES = [
4352
4502
  external: [aat2("300419295", "pharmacies (health facilities )", "close")],
4353
4503
  label: "Pharmacy",
4354
4504
  note: "Getty publishes this preferred label with a stray space before the closing bracket. It is reproduced exactly as published, because a label edited for tidiness stops matching the source it is supposed to crosswalk to.",
4355
- provenance: MIU,
4505
+ provenance: PROGRAM_SPACES,
4356
4506
  related: [serves("healthcare")],
4357
4507
  slug: "pharmacy"
4358
4508
  },
@@ -4360,13 +4510,13 @@ var HEALTHCARE_SPACES = [
4360
4510
  definition: "A room whose airborne particle count is controlled by design, with sealed, coved and shedding-free surfaces throughout and a gowning sequence to get into it.",
4361
4511
  external: [aat2("300004509", "clean rooms", "exact")],
4362
4512
  label: "Clean Room",
4363
- provenance: MIU,
4513
+ provenance: PROGRAM_SPACES,
4364
4514
  slug: "clean-room"
4365
4515
  },
4366
4516
  {
4367
4517
  definition: "The room used equipment and waste are held in before they leave a clinical department, under negative pressure and specified for washdown throughout.",
4368
4518
  label: "Soiled Room",
4369
- provenance: MIU,
4519
+ provenance: PROGRAM_SPACES,
4370
4520
  related: [serves("healthcare")],
4371
4521
  slug: "soiled-room"
4372
4522
  },
@@ -4391,28 +4541,28 @@ var LEARNING_SPACES = [
4391
4541
  definition: "A taught volume holding a fixed cohort facing a single teaching position; a lecture theatre with raked seating is `auditorium`.",
4392
4542
  external: [aat2("300004507", "classrooms", "exact")],
4393
4543
  label: "Classroom",
4394
- provenance: MS_ROOM_MIU,
4544
+ provenance: MS_ROOM_PROGRAM,
4395
4545
  slug: "classroom"
4396
4546
  },
4397
4547
  {
4398
4548
  broaderSlug: "classroom",
4399
4549
  definition: "A small taught room where the cohort sits round one shared table rather than in ranks; the table is shared, the teaching position is still single.",
4400
4550
  label: "Seminar Room",
4401
- provenance: MIU,
4551
+ provenance: PROGRAM_SPACES,
4402
4552
  slug: "seminar-room"
4403
4553
  },
4404
4554
  {
4405
4555
  broaderSlug: "classroom",
4406
4556
  definition: "A taught room laid out for making as well as listening - benches, sinks, pinnable walls - where students spend the session working rather than seated at desks.",
4407
4557
  label: "Studio Classroom",
4408
- provenance: MIU,
4558
+ provenance: PROGRAM_SPACES,
4409
4559
  slug: "studio-classroom"
4410
4560
  },
4411
4561
  {
4412
4562
  broaderSlug: "classroom",
4413
4563
  definition: "A taught room in a workplace rather than a school, re-set between courses and specified for adults, projection and a full day in a chair.",
4414
4564
  label: "Training Room",
4415
- provenance: MIU,
4565
+ provenance: PROGRAM_SPACES,
4416
4566
  related: [serves("workplace")],
4417
4567
  slug: "training-room"
4418
4568
  },
@@ -4421,20 +4571,20 @@ var LEARNING_SPACES = [
4421
4571
  definition: "A raked taught volume holding a large cohort facing one teaching position, where sightline and speech intelligibility set every surface.",
4422
4572
  external: [aat2("300004409", "lecture halls", "exact")],
4423
4573
  label: "Lecture Hall",
4424
- provenance: MIU,
4574
+ provenance: PROGRAM_SPACES,
4425
4575
  slug: "lecture-hall"
4426
4576
  },
4427
4577
  {
4428
4578
  definition: "A volume for bench science, where surfaces answer to chemical attack and contamination control before anything else.",
4429
4579
  external: [aat2("300007660", "laboratories (built works)", "close")],
4430
4580
  label: "Lab",
4431
- provenance: MS_ROOM_MIU,
4581
+ provenance: MS_ROOM_PROGRAM,
4432
4582
  slug: "lab"
4433
4583
  },
4434
4584
  {
4435
4585
  definition: "An open, unbooked study volume in a school or university, mixing tables, soft seating and shelving, and used all day by people who are not being taught.",
4436
4586
  label: "Learning Commons",
4437
- provenance: MIU,
4587
+ provenance: PROGRAM_SPACES,
4438
4588
  related: [serves("education")],
4439
4589
  slug: "learning-commons"
4440
4590
  },
@@ -4442,7 +4592,7 @@ var LEARNING_SPACES = [
4442
4592
  definition: "A workshop volume with tools and machines available to whoever books it, specified for dust, swarf, noise and untrained hands.",
4443
4593
  external: [aat2("300004531", "workshops (work spaces)", "close")],
4444
4594
  label: "Maker Space",
4445
- provenance: MIU,
4595
+ provenance: PROGRAM_SPACES,
4446
4596
  slug: "maker-space"
4447
4597
  },
4448
4598
  {
@@ -4450,14 +4600,14 @@ var LEARNING_SPACES = [
4450
4600
  external: [aat2("300004520", "music rooms", "close")],
4451
4601
  label: "Music Room",
4452
4602
  note: "Deliberately not a kind of `classroom`. Music rooms are played in, not lectured at, and the parent's test is a cohort facing a teaching position. AAT's match is `close` rather than `exact` for the mirror-image reason: Getty scopes music rooms domestically, \"as in houses and hotels\", and the school case is the one the spine means.",
4453
- provenance: MIU,
4603
+ provenance: PROGRAM_SPACES,
4454
4604
  slug: "music-room"
4455
4605
  },
4456
4606
  {
4457
4607
  definition: "A room for making art, with sinks, storage for wet work and daylight from one consistent direction where the building allows it.",
4458
4608
  label: "Art Room",
4459
4609
  note: "Deliberately not a kind of `classroom`, on the same test as `music_room`: it is worked in rather than taught at. The taught case with benches is `studio_classroom`, which is a child of `classroom` because it keeps the single teaching position.",
4460
- provenance: MIU,
4610
+ provenance: PROGRAM_SPACES,
4461
4611
  slug: "art-room"
4462
4612
  },
4463
4613
  {
@@ -4472,14 +4622,14 @@ var LEARNING_SPACES = [
4472
4622
  external: [aat2("300004434", "reading rooms", "exact")],
4473
4623
  label: "Reading Room",
4474
4624
  note: "Deliberately not a kind of `library`. The parent turns on shelved collections and a reading room need hold none - reading rooms sit in archives, clubs and members' buildings with nothing on the walls. What they share is silence, and silence is not subsumption.",
4475
- provenance: MIU,
4625
+ provenance: PROGRAM_SPACES,
4476
4626
  slug: "reading-room"
4477
4627
  },
4478
4628
  {
4479
4629
  definition: "The room a collection of records is kept in, held at controlled temperature and humidity and entered under supervision.",
4480
4630
  label: "Archive",
4481
4631
  note: "Deliberately not a kind of `storage`. A store is specified to hold goods; an archive is specified to hold conditions - it has a tighter environmental brief than most occupied rooms in the same building, and filing it under storage would lose exactly that. No AAT mapping: Getty's `archives` entries are all institutions, buildings or groupings of records, and none of them is the room.",
4482
- provenance: MIU,
4632
+ provenance: PROGRAM_SPACES,
4483
4633
  slug: "archive"
4484
4634
  }
4485
4635
  ];
@@ -4510,7 +4660,7 @@ var OUTDOOR_SPACES = [
4510
4660
  provenance: MS_ROOM,
4511
4661
  seenAs: ["Outdoor"],
4512
4662
  slug: "outdoor",
4513
- usage: designshopUsage("occasional")
4663
+ usage: schemeUsage("occasional")
4514
4664
  },
4515
4665
  {
4516
4666
  altLabels: ["yard"],
@@ -4518,7 +4668,7 @@ var OUTDOOR_SPACES = [
4518
4668
  definition: "A planted exterior volume held by the plot, occupied for leisure rather than crossed to get somewhere.",
4519
4669
  external: [aat2("300008090", "gardens (open spaces)", "exact")],
4520
4670
  label: "Garden",
4521
- provenance: MIU,
4671
+ provenance: PROGRAM_SPACES,
4522
4672
  slug: "garden"
4523
4673
  },
4524
4674
  {
@@ -4531,7 +4681,7 @@ var OUTDOOR_SPACES = [
4531
4681
  ],
4532
4682
  label: "Terrace",
4533
4683
  note: "`patio` is carried as another name for it rather than standing as a sibling. The two words cover the same paved outdoor room, chiefly British against chiefly American, and the distinction sometimes claimed for them - raised against ground level - is not observed consistently enough in either corpus to specify against.",
4534
- provenance: MIU,
4684
+ provenance: PROGRAM_SPACES,
4535
4685
  seenAs: ["patio"],
4536
4686
  slug: "terrace"
4537
4687
  },
@@ -4540,7 +4690,7 @@ var OUTDOOR_SPACES = [
4540
4690
  definition: "A cantilevered or recessed exterior volume above ground level, reached only from the room it serves.",
4541
4691
  external: [aat2("300002588", "balconies", "exact")],
4542
4692
  label: "Balcony",
4543
- provenance: MIU,
4693
+ provenance: PROGRAM_SPACES,
4544
4694
  slug: "balcony"
4545
4695
  },
4546
4696
  {
@@ -4548,14 +4698,14 @@ var OUTDOOR_SPACES = [
4548
4698
  definition: "An uncovered exterior volume enclosed or nearly enclosed by the walls of a building, so that the building's own faces are what bound it.",
4549
4699
  external: [aat2("300004095", "courtyards (uncovered spaces)", "exact")],
4550
4700
  label: "Courtyard",
4551
- provenance: MIU,
4701
+ provenance: PROGRAM_SPACES,
4552
4702
  slug: "courtyard"
4553
4703
  },
4554
4704
  {
4555
4705
  broaderSlug: "courtyard",
4556
4706
  definition: "The courtyard a visitor arrives into and crosses on the way to the entrance, laid for vehicles or feet and specified as the building's first impression.",
4557
4707
  label: "Arrival Courtyard",
4558
- provenance: MIU,
4708
+ provenance: PROGRAM_SPACES,
4559
4709
  slug: "arrival-courtyard"
4560
4710
  },
4561
4711
  {
@@ -4563,14 +4713,14 @@ var OUTDOOR_SPACES = [
4563
4713
  definition: "An occupied deck on a roof, raised on pedestals over the waterproofing and specified for wind uplift, drainage and the load it may carry.",
4564
4714
  external: [aat2("300004113", "decks (uncovered spaces)", "close")],
4565
4715
  label: "Roof Deck",
4566
- provenance: MIU,
4716
+ provenance: PROGRAM_SPACES,
4567
4717
  slug: "roof-deck"
4568
4718
  },
4569
4719
  {
4570
4720
  broaderSlug: "outdoor",
4571
4721
  definition: "The walkable surround of a pool, permanently wet underfoot and specified for barefoot slip resistance before anything else.",
4572
4722
  label: "Pool Deck",
4573
- provenance: MIU,
4723
+ provenance: PROGRAM_SPACES,
4574
4724
  slug: "pool-deck"
4575
4725
  },
4576
4726
  {
@@ -4578,7 +4728,7 @@ var OUTDOOR_SPACES = [
4578
4728
  definition: "A hard-paved public open space held by a building or a group of them, crossed and stood about in, sized for crowds rather than for a household.",
4579
4729
  external: [aat2("300008214", "plazas (squares)", "exact")],
4580
4730
  label: "Plaza",
4581
- provenance: MIU,
4731
+ provenance: PROGRAM_SPACES,
4582
4732
  slug: "plaza"
4583
4733
  },
4584
4734
  {
@@ -4586,7 +4736,7 @@ var OUTDOOR_SPACES = [
4586
4736
  definition: "The volume immediately against a building's external wall, read as the zone in which the facade build-up, its junctions and its ground condition are specified together.",
4587
4737
  label: "Facade Zone",
4588
4738
  note: "Names a set of surfaces rather than a volume, and fails the standing-in test the way `home_exterior` does. Retained because the spine carries it and because facade packages really are specified as one zone. If it is ever split, its contents belong in ELEMENT - `element.cladding`, `element.external-wall` - and not here.",
4589
- provenance: MIU,
4739
+ provenance: PROGRAM_SPACES,
4590
4740
  related: [relatedTo("element.cladding")],
4591
4741
  slug: "facade-zone"
4592
4742
  },
@@ -4595,14 +4745,14 @@ var OUTDOOR_SPACES = [
4595
4745
  definition: "The sheltered volume under a projecting canopy at a building's edge, where people stand out of the rain without being inside.",
4596
4746
  label: "Canopy Zone",
4597
4747
  note: "The same shape of term as `facade_zone`: the canopy itself is a constructed element and this is the volume beneath it. Where the canopy shelters vehicles rather than people, the term is `porte_cochere`.",
4598
- provenance: MIU,
4748
+ provenance: PROGRAM_SPACES,
4599
4749
  slug: "canopy-zone"
4600
4750
  },
4601
4751
  {
4602
4752
  broaderSlug: "outdoor",
4603
4753
  definition: "The outside face of a dwelling read as one scheme: walls, roof, joinery and front door taken together as a single specifying surface.",
4604
4754
  label: "Home Exterior",
4605
- note: "The weakest term on this axis against the standing-in test. What it names is a set of surfaces rather than a bounded volume, and it is here because DesignShop's product-side vocabulary carries it as a targetable space and its schemes are real. Read it as the outdoor volume immediately against the building, and if a cleaner split appears, split it.",
4755
+ note: "The weakest term on this axis against the standing-in test. What it names is a set of surfaces rather than a bounded volume, and it is here because a retailer's product-side vocabulary carries it as a targetable space and its schemes are real. Read it as the outdoor volume immediately against the building, and if a cleaner split appears, split it.",
4606
4756
  provenance: EVIDENCED,
4607
4757
  related: [serves("residential")],
4608
4758
  seenAs: ["Home Exterior"],
@@ -4622,7 +4772,7 @@ var RETAIL_SPACES = [
4622
4772
  definition: "The customer-accessible selling volume of a shop; the stock and staff areas behind it are not this term.",
4623
4773
  external: [aat2("300432409", "shops (retail spaces)", "close")],
4624
4774
  label: "Sales Floor",
4625
- provenance: MS_ROOM_MIU,
4775
+ provenance: MS_ROOM_PROGRAM,
4626
4776
  related: [serves("retail")],
4627
4777
  slug: "sales-floor"
4628
4778
  },
@@ -4630,14 +4780,14 @@ var RETAIL_SPACES = [
4630
4780
  definition: "The volume given to showing goods rather than to selling them, in a shop, a showroom or an exhibition; fixtures, lighting and sightline are its whole specification.",
4631
4781
  label: "Display Area",
4632
4782
  note: "Deliberately not a kind of `sales_floor`. Display areas occur in museums, showrooms and lobbies where nothing is for sale, and the parent's definition turns on selling. A zone rather than a room in nearly every case.",
4633
- provenance: MIU,
4783
+ provenance: PROGRAM_SPACES,
4634
4784
  slug: "display-area"
4635
4785
  },
4636
4786
  {
4637
4787
  definition: "A private changing cubicle off a `sales_floor`, entered to try clothing on.",
4638
4788
  external: [aat2("300004369", "dressing rooms", "close")],
4639
4789
  label: "Fitting Room",
4640
- provenance: MS_ROOM_MIU,
4790
+ provenance: MS_ROOM_PROGRAM,
4641
4791
  related: [serves("retail")],
4642
4792
  slug: "fitting-room"
4643
4793
  },
@@ -4646,7 +4796,7 @@ var RETAIL_SPACES = [
4646
4796
  definition: "The volume where a purchase is completed: the counter, the queue in front of it and the packing space behind it.",
4647
4797
  label: "Checkout",
4648
4798
  note: "`cash_wrap` is carried as another name for it. It is the American trade term for the same counter and its queue, and no part of the specification changes with the word.",
4649
- provenance: MIU,
4799
+ provenance: PROGRAM_SPACES,
4650
4800
  related: [serves("retail")],
4651
4801
  seenAs: ["cash_wrap"],
4652
4802
  slug: "checkout"
@@ -4654,14 +4804,14 @@ var RETAIL_SPACES = [
4654
4804
  {
4655
4805
  definition: "The volume where a customer collects an order placed elsewhere, held apart from `checkout` by no transaction happening in it.",
4656
4806
  label: "Pickup Area",
4657
- provenance: MIU,
4807
+ provenance: PROGRAM_SPACES,
4658
4808
  related: [serves("retail")],
4659
4809
  slug: "pickup-area"
4660
4810
  },
4661
4811
  {
4662
4812
  definition: "The counter and volume where goods come back, specified for queueing, inspection and the temporary stacking of things nobody wants.",
4663
4813
  label: "Returns Area",
4664
- provenance: MIU,
4814
+ provenance: PROGRAM_SPACES,
4665
4815
  related: [serves("retail")],
4666
4816
  slug: "returns-area"
4667
4817
  },
@@ -4669,7 +4819,7 @@ var RETAIL_SPACES = [
4669
4819
  definition: "A seated room off a retail or showroom floor where a customer is advised at length - specification, fitting, finance - away from the floor's noise.",
4670
4820
  label: "Consultation Room",
4671
4821
  note: "One character from `consult_room`, and deliberately not folded into it. That one is clinical - a GP surgery, examined and prescribed in, with the cleaning and privacy requirements that implies. This one is commercial and is furnished like a small meeting room. Two ids this close is a real trap, and the answer is a note on each rather than a merge that would put retail joinery into a medical specification.",
4672
- provenance: MIU,
4822
+ provenance: PROGRAM_SPACES,
4673
4823
  related: [relatedTo("space.consult-room"), serves("retail")],
4674
4824
  slug: "consultation-room"
4675
4825
  },
@@ -4678,7 +4828,7 @@ var RETAIL_SPACES = [
4678
4828
  external: [aat2("300004331", "showrooms", "broad")],
4679
4829
  label: "Showroom Bay",
4680
4830
  note: "Deliberately not a kind of `sales_floor`. A showroom bay sells nothing over a counter and often sits in a trade showroom where the public never goes; the parent's definition turns on being the selling volume of a shop.",
4681
- provenance: MIU,
4831
+ provenance: PROGRAM_SPACES,
4682
4832
  related: [serves("retail")],
4683
4833
  slug: "showroom-bay"
4684
4834
  },
@@ -4686,13 +4836,13 @@ var RETAIL_SPACES = [
4686
4836
  definition: "A room of material samples arranged to be handled and compared, with the storage system and the daylight being the whole of its specification.",
4687
4837
  label: "Sample Library",
4688
4838
  note: 'Deliberately not a kind of `storage`. It is a browsing room, not a store: things are compared in it under controlled light, which is the opposite of the parent\'s "holding" test. The nearest neighbour is `library`, and it is not that either, because nothing is read in it.',
4689
- provenance: MIU,
4839
+ provenance: PROGRAM_SPACES,
4690
4840
  slug: "sample-library"
4691
4841
  },
4692
4842
  {
4693
4843
  definition: "The part of a retail floor that is re-dressed on a cycle - window backs, feature tables, campaign walls - and specified so that it can be stripped and rebuilt without damage.",
4694
4844
  label: "Visual Merchandising Zone",
4695
- provenance: MIU,
4845
+ provenance: PROGRAM_SPACES,
4696
4846
  related: [serves("retail")],
4697
4847
  slug: "visual-merchandising-zone"
4698
4848
  },
@@ -4700,7 +4850,7 @@ var RETAIL_SPACES = [
4700
4850
  broaderSlug: "storage",
4701
4851
  definition: "The retail store behind the sales floor, holding stock for the floor in front of it; racked, unfinished and sized by delivery rather than by display.",
4702
4852
  label: "Stock Room",
4703
- provenance: MIU,
4853
+ provenance: PROGRAM_SPACES,
4704
4854
  related: [serves("retail")],
4705
4855
  slug: "stock-room"
4706
4856
  },
@@ -4708,7 +4858,7 @@ var RETAIL_SPACES = [
4708
4858
  definition: "Everything in a shop the customer never sees, taken as one zone: staff, stock handling, waste and plant behind the back-of-house door.",
4709
4859
  label: "Back of House (Retail)",
4710
4860
  note: "A grouping rather than a room, and the only term on the axis that names a side of a line instead of a volume. It is retained because retail briefs are genuinely written in these terms - a front-of-house and a back-of-house budget - and because dropping it would leave the spine unable to round-trip.",
4711
- provenance: MIU,
4861
+ provenance: PROGRAM_SPACES,
4712
4862
  related: [serves("retail")],
4713
4863
  slug: "back-of-house-retail"
4714
4864
  }
@@ -4726,18 +4876,18 @@ var SANITARY_SPACES = [
4726
4876
  external: [aat2("300004197", "bathrooms", "exact")],
4727
4877
  label: "Bathroom",
4728
4878
  note: "`application.bath` in the published APPLICATIONS axis is a room sitting inside a surface-use vocabulary, and is superseded by this term. The edge here is `related-to` and not `suitable-for` on purpose: `suitable-for` runs from a material-suitability claim TO a space, so the correct `suitable-for` edge points the other way and belongs on the applications side, alongside the deprecation.",
4729
- provenance: MS_ROOM_MIU,
4879
+ provenance: MS_ROOM_PROGRAM,
4730
4880
  related: [relatedTo("application.bath")],
4731
4881
  seenAs: ["Bathroom"],
4732
4882
  slug: "bathroom",
4733
- usage: designshopUsage("dominant")
4883
+ usage: schemeUsage("dominant")
4734
4884
  },
4735
4885
  {
4736
4886
  altLabels: ["ensuite", "en-suite bathroom"],
4737
4887
  broaderSlug: "bathroom",
4738
4888
  definition: "A bathroom reached only through the bedroom it serves, and therefore private to whoever is sleeping there; the same room off a corridor is `bathroom`.",
4739
4889
  label: "En Suite",
4740
- provenance: AUTHORED4,
4890
+ provenance: AUTHORED6,
4741
4891
  slug: "en-suite"
4742
4892
  },
4743
4893
  {
@@ -4746,7 +4896,7 @@ var SANITARY_SPACES = [
4746
4896
  external: [aat2("300081124", "lavatories (rooms)", "exact")],
4747
4897
  label: "Cloakroom / WC",
4748
4898
  note: "Deliberately not a kind of `bathroom`. In American usage a WC is a bathroom and the edge would be clean; in British usage it is not, and the whole point of the term is the absence of bathing provision. Since the difference is exactly what a specifier needs to see, the two terms sit side by side rather than one inside the other. `cloakroom` was an carried as another name here in the 0.2 draft and is now a term of its own for the coat room, on Getty's reading; the British domestic sense meaning this room moves to Seen in the wild, where observed but non-canonical labels belong. The label is left alone so the published id keeps its name.",
4749
- provenance: MS_ROOM_MIU,
4899
+ provenance: MS_ROOM_PROGRAM,
4750
4900
  seenAs: ["downstairs loo", "half bath", "cloakroom", "powder_room"],
4751
4901
  slug: "wc"
4752
4902
  },
@@ -4755,28 +4905,28 @@ var SANITARY_SPACES = [
4755
4905
  external: [aat2("300004202", "rest rooms", "exact")],
4756
4906
  label: "Restroom",
4757
4907
  note: "Deliberately not a kind of `wc`, despite the shared absence of a bath. `wc` is a single-fixture domestic room entered by one person at a time; a restroom is a shared public room with cubicles, and the two carry different fire, access and cleaning specifications end to end.",
4758
- provenance: MIU,
4908
+ provenance: PROGRAM_SPACES,
4759
4909
  slug: "restroom"
4760
4910
  },
4761
4911
  {
4762
4912
  broaderSlug: "restroom",
4763
4913
  definition: "A restroom not divided by gender, entered by anyone; usually a run of full-height individual cubicles off a shared basin lobby.",
4764
4914
  label: "All-Gender Restroom",
4765
- provenance: MIU,
4915
+ provenance: PROGRAM_SPACES,
4766
4916
  slug: "all-gender-restroom"
4767
4917
  },
4768
4918
  {
4769
4919
  broaderSlug: "restroom",
4770
4920
  definition: "A restroom sized and fitted for an adult attending a child or a dependant: one lockable room, a changing surface, and space to turn a pushchair.",
4771
4921
  label: "Family Restroom",
4772
- provenance: MIU,
4922
+ provenance: PROGRAM_SPACES,
4773
4923
  slug: "family-restroom"
4774
4924
  },
4775
4925
  {
4776
4926
  definition: "A room where people change clothes and store them while they do something else - swim, train, work a shift - with lockers, benches and usually showers.",
4777
4927
  external: [aat2("300004120", "locker rooms", "exact")],
4778
4928
  label: "Changing Room",
4779
- provenance: MIU,
4929
+ provenance: PROGRAM_SPACES,
4780
4930
  seenAs: ["locker_room"],
4781
4931
  slug: "changing-room"
4782
4932
  },
@@ -4784,7 +4934,7 @@ var SANITARY_SPACES = [
4784
4934
  definition: "A bank of lockers on a working floor with the volume in front of it, where staff drop their belongings without changing; a changing room without the changing.",
4785
4935
  label: "Locker Area",
4786
4936
  note: "Kept apart from `changing_room` rather than folded into it, because the spine files them in different sectors and the difference is real: this one has no showers, no benching and no privacy requirement, and it sits in the open.",
4787
- provenance: MIU,
4937
+ provenance: PROGRAM_SPACES,
4788
4938
  slug: "locker-area"
4789
4939
  },
4790
4940
  {
@@ -4798,7 +4948,7 @@ var SANITARY_SPACES = [
4798
4948
  definition: "The hall containing a swimming pool and its surround, where chlorine, condensation and wet feet reach every surface in the room including the ceiling.",
4799
4949
  external: [aat2("300007376", "swimming pools", "exact")],
4800
4950
  label: "Pool",
4801
- provenance: MIU,
4951
+ provenance: PROGRAM_SPACES,
4802
4952
  slug: "pool"
4803
4953
  },
4804
4954
  {
@@ -4806,7 +4956,7 @@ var SANITARY_SPACES = [
4806
4956
  definition: "A sealed room held at high humidity and body temperature, tiled or moulded throughout because condensation runs continuously down every surface in it.",
4807
4957
  external: [aat2("300004240", "steam rooms", "exact")],
4808
4958
  label: "Steam Room",
4809
- provenance: MIU,
4959
+ provenance: PROGRAM_SPACES,
4810
4960
  slug: "steam-room"
4811
4961
  },
4812
4962
  {
@@ -4814,27 +4964,27 @@ var SANITARY_SPACES = [
4814
4964
  external: [aat2("300004235", "saunas (spaces)", "exact")],
4815
4965
  label: "Sauna",
4816
4966
  note: "Deliberately not a kind of `spa_pool`, whose definition turns on standing humidity. A sauna is the dry case, and the whole material consequence runs the other way: cedar and aspen where a steam room takes tile. Filing it under the wet parent would make the parent's own boundary clause false.",
4817
- provenance: MIU,
4967
+ provenance: PROGRAM_SPACES,
4818
4968
  slug: "sauna"
4819
4969
  },
4820
4970
  {
4821
4971
  definition: "A single-client room for massage and hands-on treatment, kept warm, dim and quiet; dry, which is what separates it from the wet rooms it sits among.",
4822
4972
  label: "Spa Treatment Room",
4823
4973
  note: "Deliberately not a kind of `spa_pool`, for the same reason as `sauna`: it is a dry room in a wet suite. Its nearest specification neighbour is `therapy_room`, not `pool`.",
4824
- provenance: MIU,
4974
+ provenance: PROGRAM_SPACES,
4825
4975
  slug: "spa-treatment-room"
4826
4976
  },
4827
4977
  {
4828
4978
  definition: "The working position of a hairdresser or beautician - chair, mirror, backwash and the volume around them - repeated along a salon floor.",
4829
4979
  label: "Salon Station",
4830
4980
  note: "A furniture-defined zone, and one of the few that is genuinely repeated rather than singular: a salon is specified as n stations plus circulation. Kept for that reason.",
4831
- provenance: MIU,
4981
+ provenance: PROGRAM_SPACES,
4832
4982
  slug: "salon-station"
4833
4983
  },
4834
4984
  {
4835
4985
  definition: "A room for washing and grooming animals in a residential or retail building, drained and tanked like a shower room and specified for claws as well as water.",
4836
4986
  label: "Pet Spa",
4837
- provenance: MIU,
4987
+ provenance: PROGRAM_SPACES,
4838
4988
  related: [serves("residential"), serves("retail")],
4839
4989
  slug: "pet-spa"
4840
4990
  }
@@ -4852,7 +5002,7 @@ var SERVICE_SPACES = [
4852
5002
  definition: "A back-of-house volume given over to holding goods until they are wanted, racked or stacked, and entered to put something down or pick something up.",
4853
5003
  external: [aat2("300004479", "storerooms", "exact")],
4854
5004
  label: "Storage",
4855
- provenance: MIU,
5005
+ provenance: PROGRAM_SPACES,
4856
5006
  slug: "storage"
4857
5007
  },
4858
5008
  {
@@ -4864,7 +5014,7 @@ var SERVICE_SPACES = [
4864
5014
  aat2("300004479", "storerooms", "close")
4865
5015
  ],
4866
5016
  label: "Closet & Storage",
4867
- note: "Overlaps `storage` heavily and is kept because the two dictionaries mean different things by it: this is DesignShop's consumer-facing capture value, room-scale and domestic, and `storage` is the program type, any sector and any size. The ISA edge holds - every closet is a store - so the overlap is expressed as a hierarchy rather than as a duplicate.",
5017
+ note: "Overlaps `storage` heavily and is kept because the two dictionaries mean different things by it: this is the furnishings retailer's consumer-facing capture value, room-scale and domestic, and `storage` is the program type, any sector and any size. The ISA edge holds - every closet is a store - so the overlap is expressed as a hierarchy rather than as a duplicate.",
4868
5018
  provenance: EVIDENCED,
4869
5019
  related: [serves("residential")],
4870
5020
  seenAs: ["Closet & Storage", "closet"],
@@ -4874,21 +5024,21 @@ var SERVICE_SPACES = [
4874
5024
  broaderSlug: "storage",
4875
5025
  definition: "The cleaner's store: a small room holding equipment, consumables and a slop sink, tanked at low level and ventilated.",
4876
5026
  label: "Janitor's Closet",
4877
- provenance: MIU,
5027
+ provenance: PROGRAM_SPACES,
4878
5028
  slug: "janitor-closet"
4879
5029
  },
4880
5030
  {
4881
5031
  broaderSlug: "storage",
4882
5032
  definition: "A secure room for storing bicycles, racked or hung, with the floor and the walls specified for wet tyres and pedal strikes.",
4883
5033
  label: "Bike Room",
4884
- provenance: MIU,
5034
+ provenance: PROGRAM_SPACES,
4885
5035
  slug: "bike-room"
4886
5036
  },
4887
5037
  {
4888
5038
  broaderSlug: "storage",
4889
5039
  definition: "The unstaffed parcel room of a residential building: lockers and shelving, entered by residents to collect deliveries and by couriers to leave them.",
4890
5040
  label: "Mail & Package Room",
4891
- provenance: MIU,
5041
+ provenance: PROGRAM_SPACES,
4892
5042
  related: [serves("residential")],
4893
5043
  slug: "mail-package-room"
4894
5044
  },
@@ -4896,14 +5046,14 @@ var SERVICE_SPACES = [
4896
5046
  definition: "The room holding a building's heating, cooling and water plant, sized by the equipment and the access route needed to replace it.",
4897
5047
  external: [aat2("300004527", "boiler rooms", "close")],
4898
5048
  label: "Mechanical Room",
4899
- provenance: MIU,
5049
+ provenance: PROGRAM_SPACES,
4900
5050
  slug: "mechanical-room"
4901
5051
  },
4902
5052
  {
4903
5053
  definition: "The room holding a building's incoming supply, switchgear and distribution boards, entered only by competent persons and kept clear by regulation.",
4904
5054
  label: "Electrical Room",
4905
5055
  note: "Deliberately not a kind of `mechanical_room`. Switchgear is not a kind of mechanical plant, the two rooms are kept apart by regulation for exactly that reason, and their clearances, fire compartmentation and access rules are different.",
4906
- provenance: MIU,
5056
+ provenance: PROGRAM_SPACES,
4907
5057
  slug: "electrical-room"
4908
5058
  },
4909
5059
  {
@@ -4911,21 +5061,21 @@ var SERVICE_SPACES = [
4911
5061
  external: [aat2("300005153", "laundries (businesses)", "close")],
4912
5062
  label: "Laundry",
4913
5063
  note: "Held apart from `utility_room`, which is the domestic room. The spine carries both, in different sectors, and folding them would put a commercial extract regime into somebody's back kitchen.",
4914
- provenance: MIU,
5064
+ provenance: PROGRAM_SPACES,
4915
5065
  slug: "laundry"
4916
5066
  },
4917
5067
  {
4918
5068
  definition: "The room a building's waste and recycling is held in between collections, drained, ventilated and washable to the ceiling.",
4919
5069
  label: "Trash Room",
4920
5070
  note: "Deliberately not a kind of `storage`. What is held here is being got rid of, not kept for later, and the room is specified against smell, vermin and washdown rather than against racking loads. It is the hygiene brief that separates them.",
4921
- provenance: MIU,
5071
+ provenance: PROGRAM_SPACES,
4922
5072
  slug: "trash-room"
4923
5073
  },
4924
5074
  {
4925
5075
  definition: "The volume where goods are taken on and off vehicles, at vehicle-bed height, and specified for wheel loads, impact and weather at an open edge.",
4926
5076
  external: [aat2("300004279", "loading docks", "exact")],
4927
5077
  label: "Loading Dock",
4928
- provenance: MIU,
5078
+ provenance: PROGRAM_SPACES,
4929
5079
  slug: "loading-dock"
4930
5080
  }
4931
5081
  ];
@@ -4942,18 +5092,18 @@ var SLEEPING_SPACES = [
4942
5092
  definition: "A private sleeping volume in a dwelling.",
4943
5093
  external: [aat2("300004364", "bedrooms", "exact")],
4944
5094
  label: "Bedroom",
4945
- provenance: MS_ROOM_MIU,
5095
+ provenance: MS_ROOM_PROGRAM,
4946
5096
  related: [serves("residential")],
4947
5097
  seenAs: ["Bedroom"],
4948
5098
  slug: "bedroom",
4949
- usage: designshopUsage("common")
5099
+ usage: schemeUsage("common")
4950
5100
  },
4951
5101
  {
4952
5102
  altLabels: ["master bedroom", "principal suite"],
4953
5103
  broaderSlug: "bedroom",
4954
5104
  definition: "The largest bedroom of a dwelling, held by whoever runs the household, and normally the one with the `en_suite` and the `dressing_room` attached to it.",
4955
5105
  label: "Principal Bedroom",
4956
- provenance: AUTHORED4,
5106
+ provenance: AUTHORED6,
4957
5107
  slug: "principal-bedroom"
4958
5108
  },
4959
5109
  {
@@ -4963,14 +5113,14 @@ var SLEEPING_SPACES = [
4963
5113
  external: [aat2("300248355", "guest rooms", "exact")],
4964
5114
  label: "Guest Bedroom",
4965
5115
  note: "AAT 300248355 is `exact` here and `related` on `hotel_room`, and the split is the reason that downgrade happened. Getty's scope note reads: rooms in DWELLINGS set aside for temporary use by guests and not regularly used by household members. That is this term precisely, and it is not a let hotel bedroom at all.",
4966
- provenance: AUTHORED4,
5116
+ provenance: AUTHORED6,
4967
5117
  slug: "guest-bedroom"
4968
5118
  },
4969
5119
  {
4970
5120
  broaderSlug: "bedroom",
4971
5121
  definition: "The smallest bedroom in a dwelling, too small to take a double bed and a route past it, and so used for a single, a desk or storage by turns.",
4972
5122
  label: "Box Room",
4973
- provenance: AUTHORED4,
5123
+ provenance: AUTHORED6,
4974
5124
  slug: "box-room"
4975
5125
  },
4976
5126
  {
@@ -4981,7 +5131,7 @@ var SLEEPING_SPACES = [
4981
5131
  ],
4982
5132
  label: "Nursery",
4983
5133
  note: 'Deliberately not a kind of `bedroom`, on Getty\'s own evidence: AAT scopes a nursery as serving "as a bedroom or playroom", and AAT mints `night nurseries` separately for the sleeping-only case. If not every nursery is a bedroom, the ISA test fails, and it does. The nursery school is a building and belongs to TYPOLOGY, not here.',
4984
- provenance: AUTHORED4,
5134
+ provenance: AUTHORED6,
4985
5135
  slug: "nursery"
4986
5136
  },
4987
5137
  {
@@ -4995,7 +5145,7 @@ var SLEEPING_SPACES = [
4995
5145
  // for a hotel bedroom at all - which is the same gap this axis exists to fill, showing up in
4996
5146
  // the world's best art-and-architecture thesaurus.
4997
5147
  note: "Deliberately not a kind of `bedroom`. A hotel room is a bedroom plus its bathroom, desk and wardrobe let as one unit, and its surfaces answer to contract fire, cleaning and wear standards a domestic bedroom never sees. Subsuming it would make every bedroom query return hospitality specifications.",
4998
- provenance: MS_ROOM_MIU,
5148
+ provenance: MS_ROOM_PROGRAM,
4999
5149
  related: [serves("hospitality")],
5000
5150
  seenAs: ["guestroom"],
5001
5151
  slug: "hotel-room"
@@ -5005,7 +5155,7 @@ var SLEEPING_SPACES = [
5005
5155
  definition: "A hotel room let as a run of connected rooms occupied as one unit, with a sitting room separate from the sleeping room.",
5006
5156
  external: [aat2("300004050", "suites (rooms)", "exact")],
5007
5157
  label: "Suite",
5008
- provenance: MIU,
5158
+ provenance: PROGRAM_SPACES,
5009
5159
  slug: "suite"
5010
5160
  },
5011
5161
  {
@@ -5013,7 +5163,7 @@ var SLEEPING_SPACES = [
5013
5163
  external: [aat2("300081956", "dormitories (rooms)", "close")],
5014
5164
  label: "Dormitory Room",
5015
5165
  note: "Deliberately not a kind of `bedroom`. It fails the parent on both clauses: it is not in a dwelling, and in its shared form it is not private. The AAT match is `close` rather than `exact` because Getty scopes dormitories as rooms containing a NUMBER of beds, and a modern study bedroom is single.",
5016
- provenance: MIU,
5166
+ provenance: PROGRAM_SPACES,
5017
5167
  related: [serves("residential")],
5018
5168
  slug: "dormitory-room"
5019
5169
  },
@@ -5022,7 +5172,7 @@ var SLEEPING_SPACES = [
5022
5172
  external: [aat2("300004543", "hospital wards", "close")],
5023
5173
  label: "Patient Room",
5024
5174
  note: "Deliberately not a kind of `bedroom`. People sleep in it, which is the whole of the resemblance. The ISA test asks whether every patient room is a bedroom, and it is not: it is a clinical space that happens to contain a bed, and its material specification is closer to `operating_room` than to `bedroom`.",
5025
- provenance: MS_ROOM_MIU,
5175
+ provenance: MS_ROOM_PROGRAM,
5026
5176
  related: [serves("healthcare")],
5027
5177
  slug: "patient-room"
5028
5178
  },
@@ -5032,7 +5182,7 @@ var SLEEPING_SPACES = [
5032
5182
  external: [aat2("300004369", "dressing rooms", "exact")],
5033
5183
  label: "Dressing Room",
5034
5184
  note: 'Deliberately not a kind of `closet_storage`, whose definition ends "never to stay in" - which is exactly what a dressing room is for. AAT 300004369 is `exact` here and `close` on `fitting_room`; Getty scopes it as "rooms for dressing and the toilet, usually opening from a bedroom", which is this room and only approximately a shop\'s changing cubicle.',
5035
- provenance: AUTHORED4,
5185
+ provenance: AUTHORED6,
5036
5186
  slug: "dressing-room"
5037
5187
  }
5038
5188
  ];
@@ -5064,21 +5214,21 @@ var WORKING_SPACES = [
5064
5214
  definition: "The run of continuous shared desking within an open office, unassigned and set out as one long surface rather than as separate desks.",
5065
5215
  label: "Benching",
5066
5216
  note: "A furniture layout named as a program space, which is what the spine does here. It is filed under `open_office` because every benched area is one; a reader wanting the desk itself wants ELEMENT or a furniture vocabulary, neither of which this is.",
5067
- provenance: MIU,
5217
+ provenance: PROGRAM_SPACES,
5068
5218
  slug: "benching"
5069
5219
  },
5070
5220
  {
5071
5221
  broaderSlug: "workspace",
5072
5222
  definition: "An enclosed workspace volume held by one person or a small named group, with a door that shuts.",
5073
5223
  label: "Private Office",
5074
- provenance: MS_ROOM_MIU,
5224
+ provenance: MS_ROOM_PROGRAM,
5075
5225
  slug: "private-office"
5076
5226
  },
5077
5227
  {
5078
5228
  broaderSlug: "private-office",
5079
5229
  definition: "A private office held by a teacher or academic, doubling as the room a student is seen in one at a time, and therefore holding a visitor chair as well as a desk.",
5080
5230
  label: "Faculty Office",
5081
- provenance: MIU,
5231
+ provenance: PROGRAM_SPACES,
5082
5232
  related: [serves("education")],
5083
5233
  slug: "faculty-office"
5084
5234
  },
@@ -5086,7 +5236,7 @@ var WORKING_SPACES = [
5086
5236
  broaderSlug: "workspace",
5087
5237
  definition: "A single-occupant, acoustically isolated volume for calls and short focused work, sized so that occupying it for a whole day is not the intent.",
5088
5238
  label: "Phone Booth",
5089
- provenance: MS_ROOM_MIU,
5239
+ provenance: MS_ROOM_PROGRAM,
5090
5240
  slug: "phone-booth"
5091
5241
  },
5092
5242
  {
@@ -5094,7 +5244,7 @@ var WORKING_SPACES = [
5094
5244
  definition: "An enclosed room for one or two people to work in undisturbed for as long as they need, sized and ventilated for a full day where `phone_booth` is not.",
5095
5245
  label: "Focus Room",
5096
5246
  note: "Deliberately not a kind of `phone_booth`. The parent's definition rules out day-long occupation, which is precisely what this room is for. They look identical on a plan and are specified differently in ventilation, daylight and seating, so the distinction is the term's whole value.",
5097
- provenance: MIU,
5247
+ provenance: PROGRAM_SPACES,
5098
5248
  slug: "focus-room"
5099
5249
  },
5100
5250
  {
@@ -5102,7 +5252,7 @@ var WORKING_SPACES = [
5102
5252
  definition: "A room a project team holds for the length of a project, worked in daily and left set up between sessions, with the walls given over to pinning things onto.",
5103
5253
  label: "Project Room",
5104
5254
  note: "Deliberately not a kind of `meeting_room`. A meeting room is booked, emptied and handed on; a project room is occupied continuously and its walls are a working surface. Filed under `workspace` because that is the honest parent.",
5105
- provenance: MIU,
5255
+ provenance: PROGRAM_SPACES,
5106
5256
  slug: "project-room"
5107
5257
  },
5108
5258
  {
@@ -5111,7 +5261,7 @@ var WORKING_SPACES = [
5111
5261
  external: [aat2("300004398", "conference rooms", "close")],
5112
5262
  label: "Meeting Room",
5113
5263
  note: "`conference_room` is carried as another name for it rather than standing as a sibling: it names the same enclosed room in a more formal register, chiefly American, and nothing about the specification changes with the word. Where the formality is real rather than lexical, the term wanted is `boardroom`.",
5114
- provenance: MS_ROOM_MIU,
5264
+ provenance: MS_ROOM_PROGRAM,
5115
5265
  seenAs: ["conference_room"],
5116
5266
  slug: "meeting-room"
5117
5267
  },
@@ -5120,21 +5270,21 @@ var WORKING_SPACES = [
5120
5270
  definition: "The named meeting room a board sits in: one fixed table, one specification, and the room in the building where money is spent on the finishes.",
5121
5271
  external: [aat2("300081159", "boardrooms", "exact")],
5122
5272
  label: "Boardroom",
5123
- provenance: MIU,
5273
+ provenance: PROGRAM_SPACES,
5124
5274
  slug: "boardroom"
5125
5275
  },
5126
5276
  {
5127
5277
  broaderSlug: "meeting-room",
5128
5278
  definition: "A small enclosed meeting room for three or four people around a screen, booked briefly and left; the smallest room that still satisfies `meeting_room`.",
5129
5279
  label: "Huddle Room",
5130
- provenance: MIU,
5280
+ provenance: PROGRAM_SPACES,
5131
5281
  slug: "huddle-room"
5132
5282
  },
5133
5283
  {
5134
5284
  definition: "The volume a whole organisation gathers in to be addressed, usually a floor cleared and re-set rather than a room kept for it.",
5135
5285
  label: "Town Hall Space",
5136
5286
  note: "Deliberately not a kind of `meeting_room`. It is not enclosed and it is not scheduled group discussion - it is one-to-many address in whatever volume is big enough, most often an atrium or a cleared floor. The civic building of the same name is TYPOLOGY's business, not this axis's.",
5137
- provenance: MIU,
5287
+ provenance: PROGRAM_SPACES,
5138
5288
  slug: "town-hall"
5139
5289
  },
5140
5290
  {
@@ -5146,18 +5296,18 @@ var WORKING_SPACES = [
5146
5296
  aat2("300180734", "home offices (workspaces)", "close")
5147
5297
  ],
5148
5298
  label: "Study / Home Office",
5149
- note: "DesignShop's `Office` room type carries this term's band, not `private_office`'s. Its corpus is residential room schemes, so an office captured there is a room in a house.",
5299
+ note: "The furnishings retailer's `Office` room type carries this term's band, not `private_office`'s. Its corpus is residential room schemes, so an office captured there is a room in a house.",
5150
5300
  provenance: EVIDENCED,
5151
5301
  related: [serves("residential")],
5152
5302
  seenAs: ["Office"],
5153
5303
  slug: "study",
5154
- usage: designshopUsage("common")
5304
+ usage: schemeUsage("common")
5155
5305
  },
5156
5306
  {
5157
5307
  definition: "The volume around a workplace's shared printing and finishing equipment, specified for noise, heat and paper storage.",
5158
5308
  label: "Copy / Print",
5159
5309
  note: "No AAT mapping. Getty's `print rooms` (300411377) is a room for storing and viewing prints as works of art, which is the opposite end of the word. Searched and declined rather than left unchecked.",
5160
- provenance: MIU,
5310
+ provenance: PROGRAM_SPACES,
5161
5311
  related: [serves("workplace")],
5162
5312
  slug: "copy-print"
5163
5313
  },
@@ -5166,7 +5316,7 @@ var WORKING_SPACES = [
5166
5316
  external: [aat2("300256426", "mailrooms", "exact")],
5167
5317
  label: "Mailroom",
5168
5318
  note: "Kept apart from `mail_package_room` rather than folded, under the rule that two terms a specifier would write differently stay separate. This one is staffed and handles outgoing post; the other is unstaffed, residential, and is a wall of parcel lockers.",
5169
- provenance: MIU,
5319
+ provenance: PROGRAM_SPACES,
5170
5320
  related: [serves("workplace")],
5171
5321
  slug: "mailroom"
5172
5322
  },
@@ -5174,13 +5324,13 @@ var WORKING_SPACES = [
5174
5324
  definition: "The room holding a building's servers and comms racks, specified for cooling, cable management and fire suppression before anything else.",
5175
5325
  external: [aat2("300004510", "computer rooms", "close")],
5176
5326
  label: "IT Room",
5177
- provenance: MIU,
5327
+ provenance: PROGRAM_SPACES,
5178
5328
  slug: "it-room"
5179
5329
  },
5180
5330
  {
5181
5331
  definition: "A small lockable room in a workplace for private, non-work use - rest, medication, prayer, expressing milk - kept unbookable for any one of them.",
5182
5332
  label: "Wellness Room",
5183
- provenance: MIU,
5333
+ provenance: PROGRAM_SPACES,
5184
5334
  related: [serves("workplace")],
5185
5335
  slug: "wellness-room"
5186
5336
  },
@@ -5188,14 +5338,14 @@ var WORKING_SPACES = [
5188
5338
  broaderSlug: "wellness-room",
5189
5339
  definition: "A wellness room dedicated to expressing and storing milk, with the fridge, the sink and the lock that the general case only sometimes has.",
5190
5340
  label: "Mother's Room",
5191
- provenance: MIU,
5341
+ provenance: PROGRAM_SPACES,
5192
5342
  slug: "mother-room"
5193
5343
  },
5194
5344
  {
5195
5345
  definition: "The room staff take their breaks in, away from the people they serve; eating happens in it, which is what separates it from `wellness_room`.",
5196
5346
  external: [aat2("300111871", "lunchrooms", "close")],
5197
5347
  label: "Staff Room",
5198
- provenance: MIU,
5348
+ provenance: PROGRAM_SPACES,
5199
5349
  slug: "staff-room"
5200
5350
  }
5201
5351
  ];
@@ -5224,22 +5374,22 @@ var SPACE_TERMS = SPACE_SECTORS.flatMap(
5224
5374
  (sector) => sector.terms
5225
5375
  );
5226
5376
  var SPACE_BY_ID = new Map(
5227
- SPACE_TERMS.map((term10) => [term10.slug, term10])
5377
+ SPACE_TERMS.map((term12) => [term12.slug, term12])
5228
5378
  );
5229
5379
  var SECTOR_IDS = new Set(
5230
- SECTOR_TERMS.map((term10) => term10.slug)
5380
+ SECTOR_TERMS.map((term12) => term12.slug)
5231
5381
  );
5232
5382
 
5233
5383
  // src/axes/style.ts
5234
5384
  var ESTATE3 = "all five estate repos";
5235
- var ARCHITIZER_STYLES_SOURCE = "architizer STYLES";
5385
+ var PLATFORM_STYLES_SOURCE = "STYLES in an architecture-projects platform (src-01)";
5236
5386
  var SNAPSHOT9 = "2026-08-21";
5237
5387
  var MARKET_IDIOM = "market-idiom";
5238
5388
  var MOVEMENT = "movement";
5239
5389
  var TRADITION = "tradition";
5240
5390
  var AAT_ENDPOINT = "vocab.getty.edu/sparql";
5241
- var DESIGNSHOP_SNAPSHOT2 = "2026-08-18";
5242
- var DESIGNSHOP_SCHEMES = "designshop room schemes";
5391
+ var SCHEME_SNAPSHOT2 = "2026-08-18";
5392
+ var SCHEME_CORPUS2 = "room schemes in a furnishings retailer (src-03)";
5243
5393
  var aat3 = (slug, label, match) => ({
5244
5394
  identifier: slug,
5245
5395
  label,
@@ -5264,11 +5414,11 @@ var STYLE_TERMS = [
5264
5414
  styleKind: MOVEMENT,
5265
5415
  usage: {
5266
5416
  band: "occasional",
5267
- corpus: DESIGNSHOP_SCHEMES,
5268
- snapshot: DESIGNSHOP_SNAPSHOT2
5417
+ corpus: SCHEME_CORPUS2,
5418
+ snapshot: SCHEME_SNAPSHOT2
5269
5419
  }
5270
5420
  },
5271
- // NO USAGE BAND, deliberately. DesignShop tags a dominant share of its room schemes `Modern`,
5421
+ // NO USAGE BAND, deliberately. The furnishings retailer tags a dominant share of its room schemes `Modern`,
5272
5422
  // and that row is the one the crosswalk declines: `Modern` reads as either this term or
5273
5423
  // `style.contemporary`, and the source never recorded which. Attributing the usage here would
5274
5424
  // smuggle in the guess the crosswalk refused to make. A term with no band because the
@@ -5288,13 +5438,13 @@ var STYLE_TERMS = [
5288
5438
  provenance: {
5289
5439
  basis: "evidenced",
5290
5440
  snapshot: SNAPSHOT9,
5291
- source: "architizer, materia"
5441
+ source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
5292
5442
  },
5293
5443
  slug: "modernism",
5294
5444
  styleKind: MOVEMENT,
5295
5445
  usageWithheld: {
5296
- corpus: DESIGNSHOP_SCHEMES,
5297
- reason: "DesignShop tags a dominant share of its room schemes `Modern`, but that is the crosswalk row that declines: `Modern` reads as either this term or `style.contemporary`, and the source never recorded which. Attributing the usage here would smuggle in the guess the crosswalk refused to make."
5446
+ corpus: SCHEME_CORPUS2,
5447
+ reason: "The furnishings retailer tags a dominant share of its room schemes `Modern`, but that is the crosswalk row that declines: `Modern` reads as either this term or `style.contemporary`, and the source never recorded which. Attributing the usage here would smuggle in the guess the crosswalk refused to make."
5298
5448
  }
5299
5449
  },
5300
5450
  {
@@ -5307,7 +5457,7 @@ var STYLE_TERMS = [
5307
5457
  provenance: {
5308
5458
  basis: "evidenced",
5309
5459
  snapshot: SNAPSHOT9,
5310
- source: "architizer, designround, designshop, materialgraph"
5460
+ 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)"
5311
5461
  },
5312
5462
  related: [{ predicate: "evokes", target: "period.mid-century" }],
5313
5463
  slug: "mid-century-modern",
@@ -5317,18 +5467,18 @@ var STYLE_TERMS = [
5317
5467
  definition: "The prevailing current idiom: clean-lined, unornamented, neither period-referencing nor doctrinally modernist.",
5318
5468
  external: [aat3("300264737", "Contemporary (style of art)", "related")],
5319
5469
  label: "Contemporary",
5320
- 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 - designshop's corpus carries both at similar volume - without anyone having written down how. `period.contemporary` is a different thing on a different axis; the prefix disambiguates.",
5470
+ 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.",
5321
5471
  provenance: {
5322
5472
  basis: "evidenced",
5323
5473
  snapshot: SNAPSHOT9,
5324
- source: "designshop, materia, materialgraph"
5474
+ source: "a furnishings retailer (src-03), a rendering pipeline (src-08) and a materials-retrieval system (src-05)"
5325
5475
  },
5326
5476
  slug: "contemporary",
5327
5477
  styleKind: MARKET_IDIOM,
5328
5478
  usage: {
5329
5479
  band: "dominant",
5330
- corpus: DESIGNSHOP_SCHEMES,
5331
- snapshot: DESIGNSHOP_SNAPSHOT2
5480
+ corpus: SCHEME_CORPUS2,
5481
+ snapshot: SCHEME_SNAPSHOT2
5332
5482
  }
5333
5483
  },
5334
5484
  // Four hits, none an interiors idiom: traditional cultural properties, traditional dances, a bookbinding format, a language variant.
@@ -5354,8 +5504,8 @@ var STYLE_TERMS = [
5354
5504
  styleKind: TRADITION,
5355
5505
  usage: {
5356
5506
  band: "dominant",
5357
- corpus: DESIGNSHOP_SCHEMES,
5358
- snapshot: DESIGNSHOP_SNAPSHOT2
5507
+ corpus: SCHEME_CORPUS2,
5508
+ snapshot: SCHEME_SNAPSHOT2
5359
5509
  }
5360
5510
  },
5361
5511
  {
@@ -5366,7 +5516,7 @@ var STYLE_TERMS = [
5366
5516
  provenance: {
5367
5517
  basis: "vendored",
5368
5518
  snapshot: SNAPSHOT9,
5369
- source: ARCHITIZER_STYLES_SOURCE
5519
+ source: PLATFORM_STYLES_SOURCE
5370
5520
  },
5371
5521
  seenAs: ["Classical & Grand"],
5372
5522
  slug: "neoclassical",
@@ -5379,7 +5529,7 @@ var STYLE_TERMS = [
5379
5529
  provenance: {
5380
5530
  basis: "vendored",
5381
5531
  snapshot: SNAPSHOT9,
5382
- source: ARCHITIZER_STYLES_SOURCE
5532
+ source: PLATFORM_STYLES_SOURCE
5383
5533
  },
5384
5534
  slug: "gothic",
5385
5535
  styleKind: MOVEMENT
@@ -5391,7 +5541,7 @@ var STYLE_TERMS = [
5391
5541
  provenance: {
5392
5542
  basis: "evidenced",
5393
5543
  snapshot: SNAPSHOT9,
5394
- source: "architizer, designround, designshop, materia"
5544
+ source: "an architecture-projects platform (src-01), an editorial image library (src-02), a furnishings retailer (src-03) and a rendering pipeline (src-08)"
5395
5545
  },
5396
5546
  related: [{ predicate: "evokes", target: "period.interwar" }],
5397
5547
  seenAs: ["art-deco-luxe", "Art Deco & Glamour"],
@@ -5405,7 +5555,7 @@ var STYLE_TERMS = [
5405
5555
  provenance: {
5406
5556
  basis: "evidenced",
5407
5557
  snapshot: SNAPSHOT9,
5408
- source: "materia, architizer, designshop, materialgraph"
5558
+ source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
5409
5559
  },
5410
5560
  related: [{ predicate: "evokes", target: "typology.warehouse" }],
5411
5561
  seenAs: ["Industrial & Raw", "industrial_refined"],
@@ -5419,7 +5569,7 @@ var STYLE_TERMS = [
5419
5569
  provenance: {
5420
5570
  basis: "vendored",
5421
5571
  snapshot: SNAPSHOT9,
5422
- source: ARCHITIZER_STYLES_SOURCE
5572
+ source: PLATFORM_STYLES_SOURCE
5423
5573
  },
5424
5574
  slug: "brutalism",
5425
5575
  styleKind: MOVEMENT
@@ -5431,7 +5581,7 @@ var STYLE_TERMS = [
5431
5581
  provenance: {
5432
5582
  basis: "evidenced",
5433
5583
  snapshot: SNAPSHOT9,
5434
- source: "designround"
5584
+ source: "an editorial image library (src-02)"
5435
5585
  },
5436
5586
  searchedWithout: [
5437
5587
  {
@@ -5452,14 +5602,14 @@ var STYLE_TERMS = [
5452
5602
  provenance: {
5453
5603
  basis: "evidenced",
5454
5604
  snapshot: SNAPSHOT9,
5455
- source: "designshop"
5605
+ source: SCHEME_CORPUS2
5456
5606
  },
5457
5607
  slug: "eclectic",
5458
5608
  styleKind: MARKET_IDIOM,
5459
5609
  usage: {
5460
5610
  band: "common",
5461
- corpus: DESIGNSHOP_SCHEMES,
5462
- snapshot: DESIGNSHOP_SNAPSHOT2
5611
+ corpus: SCHEME_CORPUS2,
5612
+ snapshot: SCHEME_SNAPSHOT2
5463
5613
  }
5464
5614
  },
5465
5615
  // Hits are transitional skyscrapers, a typeface group, and Stone-Age-to-Bronze-Age periods.
@@ -5471,7 +5621,7 @@ var STYLE_TERMS = [
5471
5621
  provenance: {
5472
5622
  basis: "evidenced",
5473
5623
  snapshot: SNAPSHOT9,
5474
- source: "designshop"
5624
+ source: SCHEME_CORPUS2
5475
5625
  },
5476
5626
  related: [
5477
5627
  { predicate: "blend-of", target: "style.traditional" },
@@ -5489,8 +5639,8 @@ var STYLE_TERMS = [
5489
5639
  styleKind: MARKET_IDIOM,
5490
5640
  usage: {
5491
5641
  band: "common",
5492
- corpus: DESIGNSHOP_SCHEMES,
5493
- snapshot: DESIGNSHOP_SNAPSHOT2
5642
+ corpus: SCHEME_CORPUS2,
5643
+ snapshot: SCHEME_SNAPSHOT2
5494
5644
  }
5495
5645
  },
5496
5646
  {
@@ -5500,7 +5650,7 @@ var STYLE_TERMS = [
5500
5650
  provenance: {
5501
5651
  basis: "evidenced",
5502
5652
  snapshot: SNAPSHOT9,
5503
- source: "materia, architizer, designshop, materialgraph"
5653
+ source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
5504
5654
  },
5505
5655
  seenAs: ["Rustic & Artisan"],
5506
5656
  slug: "rustic",
@@ -5514,7 +5664,7 @@ var STYLE_TERMS = [
5514
5664
  provenance: {
5515
5665
  basis: "vendored",
5516
5666
  snapshot: SNAPSHOT9,
5517
- source: ARCHITIZER_STYLES_SOURCE
5667
+ source: PLATFORM_STYLES_SOURCE
5518
5668
  },
5519
5669
  slug: "vernacular",
5520
5670
  styleKind: TRADITION
@@ -5527,7 +5677,7 @@ var STYLE_TERMS = [
5527
5677
  provenance: {
5528
5678
  basis: "vendored",
5529
5679
  snapshot: SNAPSHOT9,
5530
- source: ARCHITIZER_STYLES_SOURCE
5680
+ source: PLATFORM_STYLES_SOURCE
5531
5681
  },
5532
5682
  slug: "critical-regionalism",
5533
5683
  styleKind: MOVEMENT
@@ -5542,7 +5692,7 @@ var STYLE_TERMS = [
5542
5692
  provenance: {
5543
5693
  basis: "evidenced",
5544
5694
  snapshot: SNAPSHOT9,
5545
- source: "designround"
5695
+ source: "an editorial image library (src-02)"
5546
5696
  },
5547
5697
  related: [{ predicate: "evokes", target: "place.region.japanese" }],
5548
5698
  searchedWithout: [
@@ -5567,7 +5717,7 @@ var STYLE_TERMS = [
5567
5717
  provenance: {
5568
5718
  basis: "vendored",
5569
5719
  snapshot: SNAPSHOT9,
5570
- source: ARCHITIZER_STYLES_SOURCE
5720
+ source: PLATFORM_STYLES_SOURCE
5571
5721
  },
5572
5722
  slug: "postmodernism",
5573
5723
  styleKind: MOVEMENT
@@ -5579,7 +5729,7 @@ var STYLE_TERMS = [
5579
5729
  provenance: {
5580
5730
  basis: "vendored",
5581
5731
  snapshot: SNAPSHOT9,
5582
- source: ARCHITIZER_STYLES_SOURCE
5732
+ source: PLATFORM_STYLES_SOURCE
5583
5733
  },
5584
5734
  slug: "deconstructivism",
5585
5735
  styleKind: MOVEMENT
@@ -5592,7 +5742,7 @@ var STYLE_TERMS = [
5592
5742
  provenance: {
5593
5743
  basis: "vendored",
5594
5744
  snapshot: SNAPSHOT9,
5595
- source: ARCHITIZER_STYLES_SOURCE
5745
+ source: PLATFORM_STYLES_SOURCE
5596
5746
  },
5597
5747
  searchedWithout: [
5598
5748
  {
@@ -5612,7 +5762,7 @@ var STYLE_TERMS = [
5612
5762
  provenance: {
5613
5763
  basis: "vendored",
5614
5764
  snapshot: SNAPSHOT9,
5615
- source: ARCHITIZER_STYLES_SOURCE
5765
+ source: PLATFORM_STYLES_SOURCE
5616
5766
  },
5617
5767
  slug: "high-tech",
5618
5768
  styleKind: MOVEMENT
@@ -5624,7 +5774,7 @@ var STYLE_TERMS = [
5624
5774
  provenance: {
5625
5775
  basis: "vendored",
5626
5776
  snapshot: SNAPSHOT9,
5627
- source: ARCHITIZER_STYLES_SOURCE
5777
+ source: PLATFORM_STYLES_SOURCE
5628
5778
  },
5629
5779
  slug: "rationalism",
5630
5780
  styleKind: MOVEMENT
@@ -5636,7 +5786,7 @@ var STYLE_TERMS = [
5636
5786
  provenance: {
5637
5787
  basis: "vendored",
5638
5788
  snapshot: SNAPSHOT9,
5639
- source: ARCHITIZER_STYLES_SOURCE
5789
+ source: PLATFORM_STYLES_SOURCE
5640
5790
  },
5641
5791
  slug: "constructivism",
5642
5792
  styleKind: MOVEMENT
@@ -5649,7 +5799,7 @@ var STYLE_TERMS = [
5649
5799
  provenance: {
5650
5800
  basis: "vendored",
5651
5801
  snapshot: SNAPSHOT9,
5652
- source: ARCHITIZER_STYLES_SOURCE
5802
+ source: PLATFORM_STYLES_SOURCE
5653
5803
  },
5654
5804
  seenAs: ["Organic", "quiet_organic"],
5655
5805
  slug: "organic-modernism",
@@ -5658,7 +5808,7 @@ var STYLE_TERMS = [
5658
5808
  ];
5659
5809
 
5660
5810
  // src/axes/tier.ts
5661
- var MG_POSITIONING = "materialgraph brand positioning, from packages/brands/src/brand-attributes.ts and materialsinuse PROJECT_BUDGET_BANDS";
5811
+ var ESTATE_POSITIONING = "brand-positioning vocabulary in a materials-retrieval system (src-05) and project budget bands in a project-materials database (src-07)";
5662
5812
  var SNAPSHOT10 = "2026-08-22";
5663
5813
  var ADR3 = "@instruments/taxonomy ADR 0001, amended 22 August 2026";
5664
5814
  var TIER_MARKET_TERMS = [
@@ -5669,7 +5819,7 @@ var TIER_MARKET_TERMS = [
5669
5819
  provenance: {
5670
5820
  basis: "evidenced",
5671
5821
  snapshot: SNAPSHOT10,
5672
- source: MG_POSITIONING
5822
+ source: ESTATE_POSITIONING
5673
5823
  },
5674
5824
  rank: 1,
5675
5825
  seenAs: ["budget"],
@@ -5682,7 +5832,7 @@ var TIER_MARKET_TERMS = [
5682
5832
  provenance: {
5683
5833
  basis: "evidenced",
5684
5834
  snapshot: SNAPSHOT10,
5685
- source: MG_POSITIONING
5835
+ source: ESTATE_POSITIONING
5686
5836
  },
5687
5837
  rank: 2,
5688
5838
  seenAs: ["mid-market", "mid_market"],
@@ -5696,7 +5846,7 @@ var TIER_MARKET_TERMS = [
5696
5846
  provenance: {
5697
5847
  basis: "evidenced",
5698
5848
  snapshot: SNAPSHOT10,
5699
- source: MG_POSITIONING
5849
+ source: ESTATE_POSITIONING
5700
5850
  },
5701
5851
  rank: 3,
5702
5852
  slug: "premium"
@@ -5709,7 +5859,7 @@ var TIER_MARKET_TERMS = [
5709
5859
  provenance: {
5710
5860
  basis: "evidenced",
5711
5861
  snapshot: SNAPSHOT10,
5712
- source: MG_POSITIONING
5862
+ source: ESTATE_POSITIONING
5713
5863
  },
5714
5864
  rank: 4,
5715
5865
  related: [{ predicate: "related-to", target: "mood.luxurious" }],
@@ -5781,7 +5931,7 @@ var TIER_PRICE_BAND_TERMS = [
5781
5931
  provenance: {
5782
5932
  basis: "vendored",
5783
5933
  snapshot: SNAPSHOT10,
5784
- source: "materialgraph PRICE_TIERS, packages/products/src/schemes/switch-axes.ts"
5934
+ source: "PRICE_TIERS in a materials-retrieval system (src-05)"
5785
5935
  },
5786
5936
  rank: index + 1,
5787
5937
  seenAs: [symbols],
@@ -5789,15 +5939,15 @@ var TIER_PRICE_BAND_TERMS = [
5789
5939
  }));
5790
5940
 
5791
5941
  // src/axes/typology.ts
5792
- var DESIGNSHOP_SNAPSHOT3 = "2026-08-18";
5793
- var AUTHORED5 = {
5942
+ var SCHEME_SNAPSHOT3 = "2026-08-18";
5943
+ var AUTHORED7 = {
5794
5944
  basis: "authored",
5795
5945
  source: "@instruments/taxonomy ADR 0001"
5796
5946
  };
5797
- var ARCHITIZER = {
5947
+ var PROJECTS_PLATFORM = {
5798
5948
  basis: "evidenced",
5799
5949
  snapshot: "2026-08-21",
5800
- source: "architizer SUBTYPE_RULES"
5950
+ source: "SUBTYPE_RULES in an architecture-projects platform (src-01)"
5801
5951
  };
5802
5952
  var TYPOLOGY_TERMS = [
5803
5953
  // ─── Residential ──────────────────────────────────────────────────────────────────────────────
@@ -5805,7 +5955,7 @@ var TYPOLOGY_TERMS = [
5805
5955
  altLabels: ["private house", "single-family house"],
5806
5956
  definition: "A whole dwelling occupying its own building from ground to roof, with its own door to the outside. The door and the verticality are the test: a bungalow is a house, a maisonette over a shop is not.",
5807
5957
  label: "House",
5808
- provenance: ARCHITIZER,
5958
+ provenance: PROJECTS_PLATFORM,
5809
5959
  seenAs: ["Single family", "Living small"],
5810
5960
  slug: "house"
5811
5961
  },
@@ -5815,8 +5965,8 @@ var TYPOLOGY_TERMS = [
5815
5965
  label: "Cottage",
5816
5966
  provenance: {
5817
5967
  basis: "evidenced",
5818
- snapshot: DESIGNSHOP_SNAPSHOT3,
5819
- source: "designshop attributes.Style"
5968
+ snapshot: SCHEME_SNAPSHOT3,
5969
+ source: "attributes.Style in a furnishings retailer (src-03)"
5820
5970
  },
5821
5971
  seenAs: ["Country/ Cottage"],
5822
5972
  slug: "cottage"
@@ -5825,25 +5975,25 @@ var TYPOLOGY_TERMS = [
5825
5975
  broaderSlug: "house",
5826
5976
  definition: "The dwelling of a working holding, sited among its outbuildings and planned around a kitchen that was the working room of the farm rather than a room off the hall.",
5827
5977
  label: "Farmhouse",
5828
- note: "The clearest case of typology used as reference rather than classification: the Farmhouse schemes in the DesignShop corpus are overwhelmingly suburban rooms evoking one, not dwellings on farms. See the header on the two predicates.",
5978
+ note: "The clearest case of typology used as reference rather than classification: the Farmhouse room schemes in a furnishings retailer are overwhelmingly suburban rooms evoking one, not dwellings on farms. See the header on the two predicates.",
5829
5979
  provenance: {
5830
5980
  basis: "evidenced",
5831
- snapshot: DESIGNSHOP_SNAPSHOT3,
5832
- source: "designshop roomStyle"
5981
+ snapshot: SCHEME_SNAPSHOT3,
5982
+ source: "roomStyle in a furnishings retailer (src-03)"
5833
5983
  },
5834
5984
  seenAs: ["Farmhouse", "Modern farmhouse"],
5835
5985
  slug: "farmhouse",
5836
5986
  usage: {
5837
5987
  band: "common",
5838
- corpus: "designshop room schemes",
5839
- snapshot: DESIGNSHOP_SNAPSHOT3
5988
+ corpus: "room schemes in a furnishings retailer (src-03)",
5989
+ snapshot: SCHEME_SNAPSHOT3
5840
5990
  }
5841
5991
  },
5842
5992
  {
5843
5993
  definition: "A large single-volume agricultural building for crop or stock, unheated and top-lit or unlit by design, with the roof structure exposed because nothing was ever fixed below it.",
5844
5994
  label: "Barn",
5845
5995
  note: "NOT parented to `house`. A barn is an agricultural building; the residential barn everyone means is a conversion, which is a change of use and not a change of what the building is. The dwelling in it is a house that happens to be in a barn.",
5846
- provenance: AUTHORED5,
5996
+ provenance: AUTHORED7,
5847
5997
  slug: "barn"
5848
5998
  },
5849
5999
  {
@@ -5851,7 +6001,7 @@ var TYPOLOGY_TERMS = [
5851
6001
  definition: "A detached house standing in its own grounds and built for retreat rather than for work on the land - the Roman country-house lineage that both the Palladian villa and the holiday villa descend from.",
5852
6002
  label: "Villa",
5853
6003
  note: "The leisure premise is the line against `farmhouse`, which is otherwise the same thing in the same landscape. British estate-agent usage for a Victorian semi is a separate and weaker sense, not carried here.",
5854
- provenance: AUTHORED5,
6004
+ provenance: AUTHORED7,
5855
6005
  slug: "villa"
5856
6006
  },
5857
6007
  {
@@ -5859,7 +6009,7 @@ var TYPOLOGY_TERMS = [
5859
6009
  broaderSlug: "house",
5860
6010
  definition: "The principal house of a landed estate, from which the surrounding land was administered: large, old and rural, but built to be lived in rather than defended.",
5861
6011
  label: "Manor",
5862
- provenance: AUTHORED5,
6012
+ provenance: AUTHORED7,
5863
6013
  slug: "manor"
5864
6014
  },
5865
6015
  {
@@ -5868,7 +6018,7 @@ var TYPOLOGY_TERMS = [
5868
6018
  definition: "The French country seat: a large house with the symmetry, steep roofline and axial approach of the French tradition, whether or not it retains defensive fabric.",
5869
6019
  label: "Chateau",
5870
6020
  note: "Parented to `house` rather than `castle` on a judgement call. The French word covers both and some ch\xE2teaux are genuinely fortified, but the term as the trade uses it means a grand house; where the fabric is actually defensive, `castle` is the better term.",
5871
- provenance: AUTHORED5,
6021
+ provenance: AUTHORED7,
5872
6022
  slug: "chateau"
5873
6023
  },
5874
6024
  {
@@ -5876,7 +6026,7 @@ var TYPOLOGY_TERMS = [
5876
6026
  broaderSlug: "house",
5877
6027
  definition: "A house in a continuous row, sharing both side walls with its neighbours and taking all its light from the front and back only, which is what governs the plan.",
5878
6028
  label: "Terraced House",
5879
- provenance: AUTHORED5,
6029
+ provenance: AUTHORED7,
5880
6030
  seenAs: ["rowhouse", "terrace"],
5881
6031
  slug: "terraced-house"
5882
6032
  },
@@ -5884,8 +6034,8 @@ var TYPOLOGY_TERMS = [
5884
6034
  altLabels: ["flat", "condominium"],
5885
6035
  definition: "A self-contained dwelling occupying part of a larger building, reached through circulation shared with other dwellings. The tenancy, not the block that holds it.",
5886
6036
  label: "Apartment",
5887
- note: "Architizer's `Multi-unit housing` and `Affordable housing` actually name the containing building, for which this axis has no term - they are listed under Seen in the wild because that is where a crosswalk will land them today, not because they are correct. See the header's gap list.",
5888
- provenance: ARCHITIZER,
6037
+ note: "An architecture-projects platform's `Multi-unit housing` and `Affordable housing` actually name the containing building, for which this axis has no term - they are listed under Seen in the wild because that is where a crosswalk will land them today, not because they are correct. See the header's gap list.",
6038
+ provenance: PROJECTS_PLATFORM,
5889
6039
  seenAs: ["condo", "Multi-unit housing", "Affordable housing"],
5890
6040
  slug: "apartment"
5891
6041
  },
@@ -5895,7 +6045,7 @@ var TYPOLOGY_TERMS = [
5895
6045
  definition: "A dwelling occupying part of a building put up for another purpose, keeping that building's structure, volume and window pattern instead of being replanned to domestic scale.",
5896
6046
  label: "Loft",
5897
6047
  note: "NOT the attic sense of the word, which is a room and belongs on SPACE. Heavily used as an aesthetic reference by people who live nowhere near a converted warehouse - the same double duty as `farmhouse`, and the reason there is no `style.loft`.",
5898
- provenance: AUTHORED5,
6048
+ provenance: AUTHORED7,
5899
6049
  slug: "loft"
5900
6050
  },
5901
6051
  {
@@ -5903,15 +6053,15 @@ var TYPOLOGY_TERMS = [
5903
6053
  broaderSlug: "house",
5904
6054
  definition: "A small timber dwelling, rural and usually seasonal, built simply enough that the construction is the finish.",
5905
6055
  label: "Cabin",
5906
- provenance: AUTHORED5,
6056
+ provenance: AUTHORED7,
5907
6057
  slug: "cabin"
5908
6058
  },
5909
6059
  // ─── Adapted industrial ───────────────────────────────────────────────────────────────────────
5910
6060
  {
5911
6061
  definition: "A building for holding goods in bulk: long clear spans, doors at vehicle height, and floors loaded for weight rather than for occupation.",
5912
6062
  label: "Warehouse",
5913
- note: "Architizer's single `Industrial` subtype covers this term and `factory` both, so a crosswalk from it is ambiguous and must decline rather than pick one.",
5914
- provenance: ARCHITIZER,
6063
+ note: "An architecture-projects platform's single `Industrial` subtype covers this term and `factory` both, so a crosswalk from it is ambiguous and must decline rather than pick one.",
6064
+ provenance: PROJECTS_PLATFORM,
5915
6065
  seenAs: ["Industrial"],
5916
6066
  slug: "warehouse"
5917
6067
  },
@@ -5919,7 +6069,7 @@ var TYPOLOGY_TERMS = [
5919
6069
  altLabels: ["works", "plant"],
5920
6070
  definition: "A building where goods are made, planned around a process or a line - the sequence of the work sets the plan, where a warehouse's is set by storage and access.",
5921
6071
  label: "Factory",
5922
- provenance: ARCHITIZER,
6072
+ provenance: PROJECTS_PLATFORM,
5923
6073
  seenAs: ["Industrial"],
5924
6074
  slug: "factory"
5925
6075
  },
@@ -5927,7 +6077,7 @@ var TYPOLOGY_TERMS = [
5927
6077
  definition: "A multi-storey industrial building organised around one shared power source, with the column grid and the floor-to-floor heights set by the drive rather than by the work.",
5928
6078
  label: "Mill",
5929
6079
  note: "NOT parented to `factory`, deliberately. The textile mill is a factory and the water-driven corn mill is not, and one term has to cover both because the trade and the conversion market use the word for both. Forcing the parent would make the ISA false half the time.",
5930
- provenance: AUTHORED5,
6080
+ provenance: AUTHORED7,
5931
6081
  slug: "mill"
5932
6082
  },
5933
6083
  // ─── Religious and institutional ──────────────────────────────────────────────────────────────
@@ -5935,8 +6085,8 @@ var TYPOLOGY_TERMS = [
5935
6085
  altLabels: ["cathedral", "parish church"],
5936
6086
  definition: "A building for Christian worship, whose plan - nave, orientation, a single focus at one end - is given by the liturgy rather than chosen by the designer.",
5937
6087
  label: "Church",
5938
- note: "Christian, explicitly. Architizer's `Religious & memorial` covers every faith and memorials besides, so it is a spelling seen in the wild and not an equivalence.",
5939
- provenance: ARCHITIZER,
6088
+ note: "Christian, explicitly. An architecture-projects platform's `Religious & memorial` covers every faith and memorials besides, so it is a spelling seen in the wild and not an equivalence.",
6089
+ provenance: PROJECTS_PLATFORM,
5940
6090
  seenAs: ["Religious & memorial"],
5941
6091
  slug: "church"
5942
6092
  },
@@ -5945,7 +6095,7 @@ var TYPOLOGY_TERMS = [
5945
6095
  definition: "A small building for Christian worship that is either subsidiary to a parish church or non-conformist; the smallness together with the absence of parish status is what makes it one.",
5946
6096
  label: "Chapel",
5947
6097
  note: "Parented to `church` because the ISA holds as defined - a chapel building is a building for Christian worship. The chapel WITHIN a cathedral or a house is a room, not a building, and belongs on SPACE; the word covers both and this term covers only the first.",
5948
- provenance: AUTHORED5,
6098
+ provenance: AUTHORED7,
5949
6099
  slug: "chapel"
5950
6100
  },
5951
6101
  {
@@ -5953,13 +6103,13 @@ var TYPOLOGY_TERMS = [
5953
6103
  definition: "An enclosed group of buildings where a religious community both lives and worships, planned around a cloister with the daily offices setting the circulation.",
5954
6104
  label: "Monastery",
5955
6105
  note: "NOT parented to `church`, though it contains one. The defining programme is residential and enclosed; a monastery is not a kind of church any more than a college is a kind of library.",
5956
- provenance: AUTHORED5,
6106
+ provenance: AUTHORED7,
5957
6107
  slug: "monastery"
5958
6108
  },
5959
6109
  {
5960
6110
  definition: "A fortified residence: thick walls, restricted openings and a controlled approach, built for a household to live behind rather than for a garrison alone - which is the line against a fort.",
5961
6111
  label: "Castle",
5962
- provenance: AUTHORED5,
6112
+ provenance: AUTHORED7,
5963
6113
  slug: "castle"
5964
6114
  },
5965
6115
  // ─── Hospitality ──────────────────────────────────────────────────────────────────────────────
@@ -5967,14 +6117,14 @@ var TYPOLOGY_TERMS = [
5967
6117
  altLabels: ["resort", "inn"],
5968
6118
  definition: "Premises letting rooms by the night with staffed reception and service. The building; the rooms inside it are `space.hotel-room` and `space.lobby`.",
5969
6119
  label: "Hotel",
5970
- provenance: ARCHITIZER,
6120
+ provenance: PROJECTS_PLATFORM,
5971
6121
  seenAs: ["Hotel & resort", "boutique"],
5972
6122
  slug: "hotel"
5973
6123
  },
5974
6124
  {
5975
6125
  definition: "Premises whose business is cooked meals served at table, with the kitchen sized and serviced for that rather than for reheating.",
5976
6126
  label: "Restaurant",
5977
- provenance: ARCHITIZER,
6127
+ provenance: PROJECTS_PLATFORM,
5978
6128
  slug: "restaurant"
5979
6129
  },
5980
6130
  {
@@ -5982,7 +6132,7 @@ var TYPOLOGY_TERMS = [
5982
6132
  definition: "Premises whose business is drink, with any food subordinate to it and the counter as the organising element of the plan.",
5983
6133
  label: "Bar",
5984
6134
  note: "Collides by id with `application.bar`, which is the piece of millwork. Different axes, different things; the prefix disambiguates.",
5985
- provenance: ARCHITIZER,
6135
+ provenance: PROJECTS_PLATFORM,
5986
6136
  seenAs: ["Bar & winery"],
5987
6137
  slug: "bar"
5988
6138
  },
@@ -5990,14 +6140,14 @@ var TYPOLOGY_TERMS = [
5990
6140
  altLabels: ["caf\xE9", "coffee shop"],
5991
6141
  definition: "Premises serving drinks and light food across a counter, trading in daylight hours with a short average stay - the counter service and the hours are the line against a restaurant.",
5992
6142
  label: "Cafe",
5993
- provenance: AUTHORED5,
6143
+ provenance: AUTHORED7,
5994
6144
  slug: "cafe"
5995
6145
  },
5996
6146
  {
5997
6147
  altLabels: ["wellness centre", "bathhouse"],
5998
6148
  definition: "Premises whose programme is bathing and treatment, with the servicing - humidity, drainage, heat - that wet rooms need. The premises; the wet room inside is `space.spa-pool`.",
5999
6149
  label: "Spa",
6000
- provenance: ARCHITIZER,
6150
+ provenance: PROJECTS_PLATFORM,
6001
6151
  seenAs: ["Spa & wellness"],
6002
6152
  slug: "spa"
6003
6153
  },
@@ -6005,41 +6155,41 @@ var TYPOLOGY_TERMS = [
6005
6155
  altLabels: ["club"],
6006
6156
  definition: "Premises for late-night drinking and dancing, planned around a floor and a sound system and lit for darkness rather than for daylight.",
6007
6157
  label: "Nightclub",
6008
- provenance: ARCHITIZER,
6158
+ provenance: PROJECTS_PLATFORM,
6009
6159
  slug: "nightclub"
6010
6160
  },
6011
6161
  // ─── Cultural ─────────────────────────────────────────────────────────────────────────────────
6012
6162
  {
6013
6163
  definition: "Premises showing art in changing exhibitions, generally without a permanent collection and often selling what is shown - the selling and the turnover are the line against a museum.",
6014
6164
  label: "Gallery",
6015
- provenance: ARCHITIZER,
6165
+ provenance: PROJECTS_PLATFORM,
6016
6166
  seenAs: ["Gallery", "Exhibition"],
6017
6167
  slug: "gallery"
6018
6168
  },
6019
6169
  {
6020
6170
  definition: "Premises holding and displaying a permanent collection it does not sell, with the storage, conservation and environmental control that keeping one requires.",
6021
6171
  label: "Museum",
6022
- provenance: ARCHITIZER,
6172
+ provenance: PROJECTS_PLATFORM,
6023
6173
  slug: "museum"
6024
6174
  },
6025
6175
  {
6026
6176
  definition: "Premises holding a collection for reading and lending, planned around both dense storage and long uninterrupted occupation of the reading floor.",
6027
6177
  label: "Library",
6028
- provenance: ARCHITIZER,
6178
+ provenance: PROJECTS_PLATFORM,
6029
6179
  slug: "library"
6030
6180
  },
6031
6181
  {
6032
6182
  altLabels: ["theater", "concert hall", "auditorium"],
6033
6183
  definition: "Premises with a fixed auditorium addressing a stage or platform, planned around sightlines and acoustics before anything else.",
6034
6184
  label: "Theatre",
6035
- provenance: ARCHITIZER,
6185
+ provenance: PROJECTS_PLATFORM,
6036
6186
  seenAs: ["Theater & concert hall", "Performing arts"],
6037
6187
  slug: "theatre"
6038
6188
  },
6039
6189
  {
6040
6190
  definition: "A small, largely single-volume building standing free in a landscape or a public space, often temporary, whose programme is to be occupied and looked at rather than to house a settled function.",
6041
6191
  label: "Pavilion",
6042
- provenance: ARCHITIZER,
6192
+ provenance: PROJECTS_PLATFORM,
6043
6193
  seenAs: ["Pavillion", "Pop-up & temporary"],
6044
6194
  slug: "pavilion"
6045
6195
  },
@@ -6048,7 +6198,7 @@ var TYPOLOGY_TERMS = [
6048
6198
  altLabels: ["workplace"],
6049
6199
  definition: "Premises for desk work, planned around floorplate depth, daylight and servicing rather than around a product or a process.",
6050
6200
  label: "Office",
6051
- provenance: ARCHITIZER,
6201
+ provenance: PROJECTS_PLATFORM,
6052
6202
  seenAs: ["coworking", "co-working", "workspace"],
6053
6203
  slug: "office"
6054
6204
  },
@@ -6056,15 +6206,15 @@ var TYPOLOGY_TERMS = [
6056
6206
  altLabels: ["store", "retail unit", "boutique"],
6057
6207
  definition: "Premises selling goods to the public from stock held on site and carried away by the buyer.",
6058
6208
  label: "Shop",
6059
- provenance: ARCHITIZER,
6209
+ provenance: PROJECTS_PLATFORM,
6060
6210
  seenAs: ["Retail", "Shopping"],
6061
6211
  slug: "shop"
6062
6212
  },
6063
6213
  {
6064
6214
  definition: "Premises displaying goods that are ordered rather than carried away, frequently trade-only; the absence of stock and of a till is the line against a shop.",
6065
6215
  label: "Showroom",
6066
- note: "Architizer folds this into `Retail` with `shop`, so a crosswalk from that label is ambiguous between the two and should decline.",
6067
- provenance: ARCHITIZER,
6216
+ note: "An architecture-projects platform folds this into `Retail` with `shop`, so a crosswalk from that label is ambiguous between the two and should decline.",
6217
+ provenance: PROJECTS_PLATFORM,
6068
6218
  seenAs: ["Retail"],
6069
6219
  slug: "showroom"
6070
6220
  },
@@ -6072,15 +6222,15 @@ var TYPOLOGY_TERMS = [
6072
6222
  altLabels: ["college", "university"],
6073
6223
  definition: "Premises for teaching, nursery through university, planned around repeated teaching rooms and circulation that can be supervised.",
6074
6224
  label: "School",
6075
- note: "Deliberately coarse, and coarser than the evidence supports: architizer distinguishes kindergarten, school and university. One term until something needs the split.",
6076
- provenance: ARCHITIZER,
6225
+ note: "Deliberately coarse, and coarser than the evidence supports: an architecture-projects platform distinguishes kindergarten, school and university. One term until something needs the split.",
6226
+ provenance: PROJECTS_PLATFORM,
6077
6227
  seenAs: ["Kindergarten", "University & research", "Higher education"],
6078
6228
  slug: "school"
6079
6229
  },
6080
6230
  {
6081
6231
  definition: "Premises admitting patients to beds overnight, with the clinical servicing - medical gases, isolation, theatres - that inpatient care requires.",
6082
6232
  label: "Hospital",
6083
- provenance: ARCHITIZER,
6233
+ provenance: PROJECTS_PLATFORM,
6084
6234
  seenAs: ["Healthcare"],
6085
6235
  slug: "hospital"
6086
6236
  },
@@ -6088,7 +6238,7 @@ var TYPOLOGY_TERMS = [
6088
6238
  altLabels: ["surgery", "medical centre", "dental practice"],
6089
6239
  definition: "Premises treating patients who arrive and leave the same day. No beds overnight, and that is the whole of the line against a hospital.",
6090
6240
  label: "Clinic",
6091
- provenance: ARCHITIZER,
6241
+ provenance: PROJECTS_PLATFORM,
6092
6242
  seenAs: ["Healthcare"],
6093
6243
  slug: "clinic"
6094
6244
  },
@@ -6096,7 +6246,7 @@ var TYPOLOGY_TERMS = [
6096
6246
  altLabels: ["town hall", "courthouse"],
6097
6247
  definition: "Premises housing a public authority and the public's dealings with it - town hall, courthouse, register office - where addressing the street as a public institution is part of the brief.",
6098
6248
  label: "Civic Building",
6099
- provenance: ARCHITIZER,
6249
+ provenance: PROJECTS_PLATFORM,
6100
6250
  seenAs: ["Civic & government", "Community center", "Municipal"],
6101
6251
  slug: "civic-building"
6102
6252
  },
@@ -6105,7 +6255,7 @@ var TYPOLOGY_TERMS = [
6105
6255
  altLabels: ["fitness centre", "sports centre"],
6106
6256
  definition: "Premises for training indoors, planned around equipment, floor loading and the ventilation rate that hard exercise needs.",
6107
6257
  label: "Gym",
6108
- provenance: ARCHITIZER,
6258
+ provenance: PROJECTS_PLATFORM,
6109
6259
  seenAs: ["Gym & recreation", "Recreation center"],
6110
6260
  slug: "gym"
6111
6261
  },
@@ -6113,7 +6263,7 @@ var TYPOLOGY_TERMS = [
6113
6263
  altLabels: ["arena"],
6114
6264
  definition: "Premises whose entire plan is tiered seating around a field of play, sized for a crowd that arrives and leaves all at once.",
6115
6265
  label: "Stadium",
6116
- provenance: ARCHITIZER,
6266
+ provenance: PROJECTS_PLATFORM,
6117
6267
  seenAs: ["Stadium & arena"],
6118
6268
  slug: "stadium"
6119
6269
  },
@@ -6122,107 +6272,107 @@ var TYPOLOGY_TERMS = [
6122
6272
  definition: "Premises where passengers board scheduled transport: concourse, platforms, and a plan governed by flow that runs one way at a time.",
6123
6273
  label: "Station",
6124
6274
  note: "Rail, bus and transit. Airports have no term here - the scale, security and airside planning make them a different building, and nothing in the estate asks for one.",
6125
- provenance: ARCHITIZER,
6275
+ provenance: PROJECTS_PLATFORM,
6126
6276
  seenAs: ["Transit"],
6127
6277
  slug: "station"
6128
6278
  }
6129
6279
  ];
6130
6280
 
6131
6281
  // src/axes/unit-shape.ts
6132
- var REVIEW_DATE2 = "2026-08-31";
6282
+ var REVIEW_DATE4 = "2026-08-31";
6133
6283
  var REVIEW_SOURCE2 = "@instruments/taxonomy TAX-45 reviewed implementation contract";
6134
- var PICKET_SOURCE = "Linear TAX-45 reviewed implementation contract; MaterialGraph picket product fixture at 53df40868bfb09bfe69bc66c455c051e34005ae1:packages/products/src/product-search-projection.test.ts";
6135
- var term9 = (slug, label, definition, extra = {}) => ({
6284
+ var PICKET_SOURCE = "Linear TAX-45 reviewed implementation contract; picket product fixture in a materials-retrieval system (src-05)";
6285
+ var term11 = (slug, label, definition, extra = {}) => ({
6136
6286
  definition,
6137
- introducedAt: REVIEW_DATE2,
6287
+ introducedAt: REVIEW_DATE4,
6138
6288
  label,
6139
6289
  provenance: { basis: "authored", source: REVIEW_SOURCE2 },
6140
- reviewedAt: REVIEW_DATE2,
6290
+ reviewedAt: REVIEW_DATE4,
6141
6291
  slug,
6142
6292
  ...extra
6143
6293
  });
6144
6294
  var UNIT_SHAPE_TERMS = [
6145
- term9(
6295
+ term11(
6146
6296
  "square",
6147
6297
  "Square",
6148
6298
  "A four-sided unit with equal sides and four right angles."
6149
6299
  ),
6150
- term9(
6300
+ term11(
6151
6301
  "rectangle",
6152
6302
  "Rectangle",
6153
6303
  "A four-sided unit with four right angles whose length and width may differ."
6154
6304
  ),
6155
- term9("circle", "Circle", "A round unit bounded by one continuous curve.", {
6305
+ term11("circle", "Circle", "A round unit bounded by one continuous curve.", {
6156
6306
  altLabels: ["Round"]
6157
6307
  }),
6158
- term9(
6308
+ term11(
6159
6309
  "oval",
6160
6310
  "Oval",
6161
6311
  "An elongated rounded unit bounded by one continuous curve."
6162
6312
  ),
6163
- term9(
6313
+ term11(
6164
6314
  "semicircle",
6165
6315
  "Semicircle",
6166
6316
  "A half-round unit bounded by one straight edge and one continuous curved edge."
6167
6317
  ),
6168
- term9("triangle", "Triangle", "A unit bounded by three straight sides."),
6169
- term9(
6318
+ term11("triangle", "Triangle", "A unit bounded by three straight sides."),
6319
+ term11(
6170
6320
  "rhombus",
6171
6321
  "Rhombus",
6172
6322
  "A four-sided unit with equal sides and oblique opposite angles.",
6173
6323
  { altLabels: ["Diamond"] }
6174
6324
  ),
6175
- term9(
6325
+ term11(
6176
6326
  "parallelogram",
6177
6327
  "Parallelogram",
6178
6328
  "A four-sided unit with both pairs of opposite sides parallel, excluding rectangles and rhombi when those more specific outlines are established."
6179
6329
  ),
6180
- term9("hexagon", "Hexagon", "A unit bounded by six straight sides."),
6181
- term9("octagon", "Octagon", "A unit bounded by eight straight sides."),
6182
- term9(
6330
+ term11("hexagon", "Hexagon", "A unit bounded by six straight sides."),
6331
+ term11("octagon", "Octagon", "A unit bounded by eight straight sides."),
6332
+ term11(
6183
6333
  "trapezoid",
6184
6334
  "Trapezoid",
6185
6335
  "A four-sided unit with exactly one pair of parallel sides."
6186
6336
  ),
6187
- term9(
6337
+ term11(
6188
6338
  "picket",
6189
6339
  "Picket",
6190
6340
  "An elongated unit whose end forms a distinct pointed or peaked outline rather than a rectangular end.",
6191
6341
  {
6192
6342
  provenance: {
6193
6343
  basis: "referenced",
6194
- snapshot: REVIEW_DATE2,
6344
+ snapshot: REVIEW_DATE4,
6195
6345
  source: PICKET_SOURCE
6196
6346
  }
6197
6347
  }
6198
6348
  ),
6199
- term9(
6349
+ term11(
6200
6350
  "chevron",
6201
6351
  "Chevron unit",
6202
6352
  "One genuinely V-shaped or boomerang-shaped physical unit; never rectangular units mitred or arranged into a chevron layout."
6203
6353
  ),
6204
- term9(
6354
+ term11(
6205
6355
  "arabesque",
6206
6356
  "Arabesque",
6207
6357
  "A bilaterally organised ornamental unit with alternating convex and concave lobes."
6208
6358
  ),
6209
- term9(
6359
+ term11(
6210
6360
  "scallop",
6211
6361
  "Scallop",
6212
6362
  "A fan-like unit with one convex curved edge and a narrower opposing edge.",
6213
6363
  { altLabels: ["Fan"] }
6214
6364
  ),
6215
- term9(
6365
+ term11(
6216
6366
  "star",
6217
6367
  "Star",
6218
6368
  "A unit with multiple outward-pointing arms around a centre."
6219
6369
  ),
6220
- term9(
6370
+ term11(
6221
6371
  "cross",
6222
6372
  "Cross",
6223
6373
  "A unit whose outline forms intersecting arms around a centre."
6224
6374
  ),
6225
- term9(
6375
+ term11(
6226
6376
  "irregular",
6227
6377
  "Irregular unit shape",
6228
6378
  "A positively observed non-regular physical outline that fits no governed shape term; it is not unknown, not unobserved and not an other bucket."
@@ -6288,10 +6438,10 @@ var MOOD_ANCHORS = {
6288
6438
  "Interior with light passing through a diffusing layer before it reaches anything, arrises rounded and edges bullnosed, boucle and brushed textile throughout, and shadows fading out with no boundary"
6289
6439
  ]
6290
6440
  };
6291
- for (const term10 of MOOD_TERMS) {
6292
- if (MOOD_ANCHORS[term10.slug] === void 0) {
6441
+ for (const term12 of MOOD_TERMS) {
6442
+ if (MOOD_ANCHORS[term12.slug] === void 0) {
6293
6443
  throw new Error(
6294
- `mood.${term10.slug} has no retrieval anchor. A mood term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in mood-anchors.ts.`
6444
+ `mood.${term12.slug} has no retrieval anchor. A mood term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in mood-anchors.ts.`
6295
6445
  );
6296
6446
  }
6297
6447
  }
@@ -6332,10 +6482,10 @@ var PERIOD_ANCHORS = {
6332
6482
  "Interior with a bay window carried on its own structure, pattern printed and woven onto wall, floor and textile at once, a moulded plaster cornice with a ceiling rose, and cast-iron grates"
6333
6483
  ]
6334
6484
  };
6335
- for (const term10 of PERIOD_TERMS) {
6336
- if (PERIOD_ANCHORS[term10.slug] === void 0) {
6485
+ for (const term12 of PERIOD_TERMS) {
6486
+ if (PERIOD_ANCHORS[term12.slug] === void 0) {
6337
6487
  throw new Error(
6338
- `period.${term10.slug} has no retrieval anchor. A period term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in period-anchors.ts.`
6488
+ `period.${term12.slug} has no retrieval anchor. A period term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in period-anchors.ts.`
6339
6489
  );
6340
6490
  }
6341
6491
  }
@@ -6414,10 +6564,10 @@ var PLACE_ANCHORS = {
6414
6564
  "A built water edge immediately outside - quay coping, bollards and mooring rings, a pontoon or a lock gate - with still fresh water held between banks and the far side visible across it"
6415
6565
  ]
6416
6566
  };
6417
- for (const term10 of [...PLACE_REGION_TERMS, ...PLACE_LANDSCAPE_TERMS]) {
6418
- if (PLACE_ANCHORS[term10.slug] === void 0) {
6567
+ for (const term12 of [...PLACE_REGION_TERMS, ...PLACE_LANDSCAPE_TERMS]) {
6568
+ if (PLACE_ANCHORS[term12.slug] === void 0) {
6419
6569
  throw new Error(
6420
- `place.${term10.slug} has no retrieval anchor. A place term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in place-anchors.ts.`
6570
+ `place.${term12.slug} has no retrieval anchor. A place term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in place-anchors.ts.`
6421
6571
  );
6422
6572
  }
6423
6573
  }
@@ -6680,6 +6830,9 @@ var GATHERING_ANCHORS = {
6680
6830
  "community-room": [
6681
6831
  "A plain bookable hall with stacking chairs against the wall, folding tables, a serving hatch to a small kitchen, and a floor marked from years of different uses"
6682
6832
  ],
6833
+ "drawing-room": [
6834
+ "A formal front sitting room kept for visitors, with a matched pair of sofas facing each other across a low table, a fireplace with pictures hung above it, full-length curtains, a rug over the boards and nothing of the household's day left out"
6835
+ ],
6683
6836
  "family-lounge": [
6684
6837
  "Wipe-clean soft seating in small groups with a low table between, a water dispenser, tissues, a quiet corner with a lamp, and a door back onto a clinical corridor"
6685
6838
  ],
@@ -7101,10 +7254,10 @@ var SPACE_ANCHORS = {
7101
7254
  ...SLEEPING_ANCHORS,
7102
7255
  ...WORKING_ANCHORS
7103
7256
  };
7104
- for (const term10 of SPACE_TERMS) {
7105
- if (SPACE_ANCHORS[term10.slug] === void 0) {
7257
+ for (const term12 of SPACE_TERMS) {
7258
+ if (SPACE_ANCHORS[term12.slug] === void 0) {
7106
7259
  throw new Error(
7107
- `space.${term10.slug} has no retrieval anchor. A space term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in space-anchors.ts.`
7260
+ `space.${term12.slug} has no retrieval anchor. A space term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in space-anchors.ts.`
7108
7261
  );
7109
7262
  }
7110
7263
  }
@@ -7189,33 +7342,40 @@ var STYLE_ANCHORS = {
7189
7342
  "Wabi-sabi interior with visibly repaired ceramics, uneven hand-applied plaster, weathered timber, asymmetry left uncorrected, patina and age treated as the value rather than tolerated"
7190
7343
  ]
7191
7344
  };
7192
- for (const term10 of STYLE_TERMS) {
7193
- if (STYLE_ANCHORS[term10.slug] === void 0) {
7345
+ for (const term12 of STYLE_TERMS) {
7346
+ if (STYLE_ANCHORS[term12.slug] === void 0) {
7194
7347
  throw new Error(
7195
- `style.${term10.slug} has no retrieval anchor. A style term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in style-anchors.ts.`
7348
+ `style.${term12.slug} has no retrieval anchor. A style term with no anchor is present in the vocabulary and invisible to every retrieval consumer. Add one in style-anchors.ts.`
7196
7349
  );
7197
7350
  }
7198
7351
  }
7199
7352
 
7200
7353
  // src/axes/index.ts
7201
- var single = (slug, label, terms, governance) => [
7202
- {
7203
- ...governance === void 0 ? {} : { governance },
7204
- label,
7205
- slug,
7206
- terms
7207
- }
7208
- ];
7209
7354
  var TAX45_REVIEW_DATE = "2026-08-31";
7210
7355
  var TAX45_GEOMETRY_GOVERNANCE = {
7211
7356
  introducedAt: TAX45_REVIEW_DATE,
7212
7357
  provenance: {
7213
7358
  basis: "referenced",
7214
7359
  snapshot: TAX45_REVIEW_DATE,
7215
- source: "Linear TAX-45 reviewed implementation contract and independent review comment c457ef92-372b-4db0-8490-0b96ecccc8ac"
7360
+ source: "Linear TAX-45 reviewed implementation contract"
7216
7361
  },
7217
7362
  reviewedAt: TAX45_REVIEW_DATE
7218
7363
  };
7364
+ var TAX48_REVIEW_DATE = "2026-09-11";
7365
+ var TAX48_AUTHORED_GOVERNANCE = {
7366
+ introducedAt: TAX48_REVIEW_DATE,
7367
+ provenance: { basis: "authored", source: "@instruments/taxonomy ADR 0006" },
7368
+ reviewedAt: TAX48_REVIEW_DATE
7369
+ };
7370
+ var TAX48_LIGHT_GOVERNANCE = {
7371
+ introducedAt: TAX48_REVIEW_DATE,
7372
+ provenance: {
7373
+ basis: "referenced",
7374
+ snapshot: TAX48_REVIEW_DATE,
7375
+ source: "EN 17037:2018 Daylight in buildings"
7376
+ },
7377
+ reviewedAt: TAX48_REVIEW_DATE
7378
+ };
7219
7379
  var AXES = [
7220
7380
  {
7221
7381
  boundary: "Material family is what a thing is made of. It is not what the thing is for, which is Application, and not what part of a building it becomes, which is Element.",
@@ -7422,6 +7582,37 @@ var AXES = [
7422
7582
  slug: "place",
7423
7583
  status: "authored"
7424
7584
  },
7585
+ {
7586
+ boundary: "Daylight is the natural light a space receives and the direction it comes from. Aspect is compass-literal and says nothing about the sun: which side is bright depends on the hemisphere, and that consequence is a separate claim on Light. It is not Palette, which is the colour of what is in the room rather than the light falling on it; not Mood, where airy and moody are outcomes a scheme achieves rather than conditions a room has; not Element, which holds the windows, rooflights and luminaires themselves, and artificial lighting is never recorded here; and not Place, which says where a building stands rather than which way a room looks.",
7587
+ facets: [
7588
+ {
7589
+ governance: TAX48_AUTHORED_GOVERNANCE,
7590
+ label: "Aspect",
7591
+ slug: "aspect",
7592
+ terms: DAYLIGHT_ASPECT_TERMS
7593
+ },
7594
+ {
7595
+ governance: TAX48_LIGHT_GOVERNANCE,
7596
+ label: "Light",
7597
+ slug: "light",
7598
+ terms: DAYLIGHT_LIGHT_TERMS
7599
+ }
7600
+ ],
7601
+ governance: TAX48_AUTHORED_GOVERNANCE,
7602
+ label: "Daylight",
7603
+ question: "How does natural light reach it?",
7604
+ slug: "daylight",
7605
+ status: "authored"
7606
+ },
7607
+ {
7608
+ boundary: "Season is the time of year a scheme is designed for or evokes, reached by `evokes` like Place and Period are. It is not Period, which is a date range a season never has; not Palette, which carries the colours a seasonal scheme happens to choose; and not Daylight, which records the light a room receives rather than the calendar a scheme refers to.",
7609
+ facets: single("season", "Season", SEASON_TERMS, TAX48_AUTHORED_GOVERNANCE),
7610
+ governance: TAX48_AUTHORED_GOVERNANCE,
7611
+ label: "Season",
7612
+ question: "Which time of year is it meant for?",
7613
+ slug: "season",
7614
+ status: "authored"
7615
+ },
7425
7616
  {
7426
7617
  boundary: "Tier is where a thing sits in a market; Mood is how a room reads. They come apart in both directions - an Aman is luxury tier and austere, a budget hotel lobby can be loudly luxurious - and welding them together loses both. It is also not a channel: trade-only says who may buy, not how much it costs.",
7427
7618
  facets: [
@@ -7441,7 +7632,7 @@ var AXES = [
7441
7632
  {
7442
7633
  boundary: "Procurement is how a thing is bought and by whom: trade-only supply, public tender, framework agreement, contract versus retail. It is not TIER, which is how much it costs, and the two were found welded together in both estate ladders that carry either.",
7443
7634
  facets: [],
7444
- gap: "Identified while authoring TIER on 22 August 2026, from two vocabularies that had each smuggled procurement into an ordinal scale. materialgraph's brand positioning list carries `trade-only` alongside value-to-luxury, while its own `distribution_model` dictionary already carries that value properly - the same fact recorded in two places, one of which is the wrong kind of place. materialsinuse's `PROJECT_BUDGET_BANDS` carries `institutional` and `public_sector` alongside budget-to-luxury, and those are precisely the two values that break that ladder's ordering. All three were refused entry to TIER rather than widening it, so they currently have nowhere canonical to go. Not yet authored.",
7635
+ gap: "Identified while authoring TIER on 22 August 2026, from two vocabularies that had each smuggled procurement into an ordinal scale. A materials-retrieval system's brand positioning list carries `trade-only` alongside value-to-luxury, while its own `distribution_model` dictionary already carries that value properly - the same fact recorded in two places, one of which is the wrong kind of place. A project-materials database's budget bands carry `institutional` and `public_sector` alongside budget-to-luxury, and those are precisely the two values that break that ladder's ordering. All three were refused entry to TIER rather than widening it, so they currently have nowhere canonical to go. Not yet authored.",
7445
7636
  label: "Procurement",
7446
7637
  question: "How is it bought, and by whom?",
7447
7638
  slug: "procurement",
@@ -7450,7 +7641,7 @@ var AXES = [
7450
7641
  {
7451
7642
  boundary: "A strategy is something a design sets out to achieve, not an idiom it follows. Biophilic design and passive design are strategies. They are not styles and were refused entry to Style rather than widening it.",
7452
7643
  facets: [],
7453
- gap: "Identified by the crosswalk-residue test (TAX-14) from architizer's Biophilic value. architizer's own SUSTAINABILITY enum is the obvious starting point. Not yet authored.",
7644
+ gap: "Identified by the crosswalk-residue test (TAX-14) from an architecture-projects platform's Biophilic value. That platform's own SUSTAINABILITY enum is the obvious starting point. Not yet authored.",
7454
7645
  label: "Strategy",
7455
7646
  question: "What was the design trying to achieve?",
7456
7647
  slug: "strategy",
@@ -7459,7 +7650,7 @@ var AXES = [
7459
7650
  {
7460
7651
  boundary: "How much is going on on the surface: pattern incidence, applied ornament, layering, and the restraint-to-maximalism range. It is not PALETTE, which carries how colour behaves rather than how much incident there is, and it is not STYLE, though several style terms are largely density claims wearing an idiom's name.",
7461
7652
  facets: [],
7462
- gap: "Identified after the fact, by the axis critique of 21 August 2026, and it is the one real gap that review found. The source vocabularies keep asking this question and no axis here answers it: materia's `patterned`, materialgraph's `playful_graphic` and `decorative_traditional`, designshop's `Eclectic`, and designround's `Modern Maximalism` against `Warm Minimalism` - a pair that differs chiefly on density and barely on anything else. materialgraph already carries `ms_pattern_density` at MATERIAL scale, which is the obvious seed, but the room-scale question is not the same one: a room of quiet materials can still be dense with incident. Until this exists, `maximalism` is filed as a style, which flatters it.",
7653
+ gap: "Identified after the fact, by the axis critique of 21 August 2026, and it is the one real gap that review found. The source vocabularies keep asking this question and no axis here answers it: a rendering pipeline's `patterned`, a materials-retrieval system's `playful_graphic` and `decorative_traditional`, a furnishings retailer's `Eclectic`, and an editorial image library's `Modern Maximalism` against `Warm Minimalism` - a pair that differs chiefly on density and barely on anything else. The materials-retrieval system already carries `ms_pattern_density` at MATERIAL scale, which is the obvious seed, but the room-scale question is not the same one: a room of quiet materials can still be dense with incident. Until this exists, `maximalism` is filed as a style, which flatters it.",
7463
7654
  label: "Density",
7464
7655
  question: "How much is going on?",
7465
7656
  slug: "density",
@@ -7468,7 +7659,7 @@ var AXES = [
7468
7659
  {
7469
7660
  boundary: "A formal move is a building-scale geometric decision: a cantilever, a courtyard, a sawtooth roof. It is not the visible outline of a supplied unit, a product profile, an idiom or a mood.",
7470
7661
  facets: [],
7471
- gap: "Identified by the crosswalk-residue test (TAX-14) from architizer's Sculptural value. architizer's own FORMAL_MOVE_EXAMPLES is the obvious starting point. Not yet authored. materialgraph's ms_shape was considered as a seed on 2026-08-27 and REJECTED: its twelve terms (linear, fluted, channelled, blocky, slender, faceted, gridded, organic) describe a product's own profile, while this axis asks what geometric move a building makes. Seeding it here would put two questions on one axis, which is the defect every boundary in ADR 0001 exists to prevent. Part of ms_shape is also texture-adjacent - fluted and channelled are relief, and finish.texture already carries ribbed - so it needs decomposing before it seeds anything, not adopting whole.",
7662
+ gap: "Identified by the crosswalk-residue test (TAX-14) from an architecture-projects platform's Sculptural value. That platform's own FORMAL_MOVE_EXAMPLES is the obvious starting point. Not yet authored. A materials-retrieval system's ms_shape was considered as a seed on 2026-08-27 and REJECTED: its twelve terms (linear, fluted, channelled, blocky, slender, faceted, gridded, organic) describe a product's own profile, while this axis asks what geometric move a building makes. Seeding it here would put two questions on one axis, which is the defect every boundary in ADR 0001 exists to prevent. Part of ms_shape is also texture-adjacent - fluted and channelled are relief, and finish.texture already carries ribbed - so it needs decomposing before it seeds anything, not adopting whole.",
7472
7663
  label: "Form",
7473
7664
  question: "What geometric move does it make?",
7474
7665
  slug: "form",
@@ -7484,13 +7675,13 @@ var buildIndex = () => {
7484
7675
  const locations = [];
7485
7676
  for (const axis of AXES) {
7486
7677
  for (const facet of axis.facets) {
7487
- for (const term10 of facet.terms) {
7678
+ for (const term12 of facet.terms) {
7488
7679
  const location = {
7489
7680
  axisSlug: axis.slug,
7490
7681
  facetSlug: facet.slug,
7491
- qualifiedReference: qualifiedReferenceOf(axis, facet.slug, term10.slug),
7492
- term: term10,
7493
- termSlug: term10.slug
7682
+ qualifiedReference: qualifiedReferenceOf(axis, facet.slug, term12.slug),
7683
+ term: term12,
7684
+ termSlug: term12.slug
7494
7685
  };
7495
7686
  locations.push(location);
7496
7687
  const key = canonicalKey(location.qualifiedReference);
@@ -7509,10 +7700,12 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
7509
7700
 
7510
7701
  // src/v1.ts
7511
7702
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
7512
- var TAXONOMY_SNAPSHOT = "2026-09-01";
7513
- var TAXONOMY_VERSION = "1.2.0";
7703
+ var TAXONOMY_SNAPSHOT = "2026-09-11";
7704
+ var TAXONOMY_VERSION = "1.3.1";
7514
7705
  var PUBLISHED_V1_BASELINE = "2026-08-30";
7515
7706
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
7707
+ var LIMESTONE_INTRODUCED = "2026-09-01";
7708
+ var RETAIL_PATTERN_SOURCE = "pattern vocabulary in a furnishings retailer (src-03)";
7516
7709
  var compareText = (left, right) => {
7517
7710
  if (left < right) {
7518
7711
  return -1;
@@ -7537,8 +7730,8 @@ var DEFAULT_PROVENANCE = {
7537
7730
  basis: "authored",
7538
7731
  source: "@instruments/taxonomy published corpus"
7539
7732
  };
7540
- var lifecycleFor = (term10) => {
7541
- const successor = term10?.supersededByReference === void 0 ? void 0 : resolveReference(term10.supersededByReference);
7733
+ var lifecycleFor = (term12) => {
7734
+ const successor = term12?.supersededByReference === void 0 ? void 0 : resolveReference(term12.supersededByReference);
7542
7735
  const successorAxis = successor === void 0 ? void 0 : AXES.find((axis) => axis.slug === successor.axisSlug);
7543
7736
  const supersededBy = successor === void 0 || successorAxis === void 0 ? void 0 : conceptUri(
7544
7737
  successor.axisSlug,
@@ -7547,9 +7740,9 @@ var lifecycleFor = (term10) => {
7547
7740
  successorAxis.facets.length > 1 || successorAxis.facets[0]?.slug !== successorAxis.slug
7548
7741
  );
7549
7742
  return {
7550
- introducedAt: term10?.introducedAt ?? PUBLISHED_V1_BASELINE,
7551
- reviewedAt: term10?.reviewedAt ?? term10?.introducedAt ?? PUBLISHED_V1_BASELINE,
7552
- status: term10?.status ?? "active",
7743
+ introducedAt: term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
7744
+ reviewedAt: term12?.reviewedAt ?? term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
7745
+ status: term12?.status ?? "active",
7553
7746
  ...supersededBy === void 0 ? {} : { supersededBy }
7554
7747
  };
7555
7748
  };
@@ -7564,11 +7757,11 @@ var inversePredicate = {
7564
7757
  "suitable-for": "supported-by",
7565
7758
  "typically-in": "typically-contains"
7566
7759
  };
7567
- var isColorScopeTerm = (term10) => term10.canonicalAuthority?.authority === "colorscope";
7568
- var governanceFor = (explanation, term10) => ({
7760
+ var isColorScopeTerm = (term12) => term12.canonicalAuthority?.authority === "colorscope";
7761
+ var governanceFor = (explanation, term12) => ({
7569
7762
  explanation,
7570
- lifecycle: lifecycleFor(term10),
7571
- provenance: term10?.provenance ?? DEFAULT_PROVENANCE,
7763
+ lifecycle: lifecycleFor(term12),
7764
+ provenance: term12?.provenance ?? DEFAULT_PROVENANCE,
7572
7765
  steward: "@instruments/taxonomy"
7573
7766
  });
7574
7767
  var externalReferences = (mappings) => mappings?.map((mapping) => ({
@@ -7577,10 +7770,10 @@ var externalReferences = (mappings) => mappings?.map((mapping) => ({
7577
7770
  label: mapping.label,
7578
7771
  match: mapping.match
7579
7772
  }));
7580
- var governedEdge = (from, predicate, to, term10, assertion = "asserted", role) => {
7773
+ var governedEdge = (from, predicate, to, term12, assertion = "asserted", role) => {
7581
7774
  const governance = governanceFor(
7582
7775
  `Taxonomy governs the asserted ${predicate} relationship and its navigable inverse.`,
7583
- term10
7776
+ term12
7584
7777
  );
7585
7778
  return {
7586
7779
  assertion,
@@ -7616,48 +7809,48 @@ var addTermNodes = (assembly, axis, axisUri) => {
7616
7809
  governedEdge(facetUri, "belongs-to-axis", axisUri, facet.governance),
7617
7810
  governedEdge(axisUri, "has-facet", facetUri, facet.governance, "inverse")
7618
7811
  );
7619
- for (const [termOrder, term10] of facet.terms.entries()) {
7620
- if (isColorScopeTerm(term10)) {
7812
+ for (const [termOrder, term12] of facet.terms.entries()) {
7813
+ if (isColorScopeTerm(term12)) {
7621
7814
  continue;
7622
7815
  }
7623
- const uri = conceptUri(axis.slug, facet.slug, term10.slug, faceted);
7624
- const qualified = faceted ? `${axis.slug}.${facet.slug}.${term10.slug}` : `${axis.slug}.${term10.slug}`;
7816
+ const uri = conceptUri(axis.slug, facet.slug, term12.slug, faceted);
7817
+ const qualified = faceted ? `${axis.slug}.${facet.slug}.${term12.slug}` : `${axis.slug}.${term12.slug}`;
7625
7818
  assembly.conceptByQualifiedSlug.set(qualified, uri);
7626
- assembly.conceptByAxisAndTerm.set(`${axis.slug}.${term10.slug}`, uri);
7819
+ assembly.conceptByAxisAndTerm.set(`${axis.slug}.${term12.slug}`, uri);
7627
7820
  const governance = governanceFor(
7628
- `Taxonomy governs the canonical identity and meaning of ${term10.label}.`,
7629
- term10
7821
+ `Taxonomy governs the canonical identity and meaning of ${term12.label}.`,
7822
+ term12
7630
7823
  );
7631
7824
  assembly.nodes.push({
7632
- ...term10.altLabels === void 0 ? {} : { altLabels: term10.altLabels },
7825
+ ...term12.altLabels === void 0 ? {} : { altLabels: term12.altLabels },
7633
7826
  axis: axisUri,
7634
- ...term10.definition === void 0 ? {} : { definition: term10.definition },
7635
- ...term10.external === void 0 ? {} : { externalReferences: externalReferences(term10.external) },
7827
+ ...term12.definition === void 0 ? {} : { definition: term12.definition },
7828
+ ...term12.external === void 0 ? {} : { externalReferences: externalReferences(term12.external) },
7636
7829
  facet: facetUri,
7637
7830
  governance,
7638
7831
  governedBy: "taxonomy",
7639
7832
  kind: "concept",
7640
- label: term10.label,
7833
+ label: term12.label,
7641
7834
  lifecycle: governance.lifecycle,
7642
- ...term10.note === void 0 ? {} : { note: term10.note },
7835
+ ...term12.note === void 0 ? {} : { note: term12.note },
7643
7836
  order: termOrder,
7644
- ...term10.placement === void 0 ? {} : { placement: term10.placement },
7837
+ ...term12.placement === void 0 ? {} : { placement: term12.placement },
7645
7838
  provenance: governance.provenance,
7646
- ...term10.rank === void 0 ? {} : { rank: term10.rank },
7647
- ...term10.searchedWithout === void 0 ? {} : { searchedWithout: term10.searchedWithout },
7648
- ...term10.seenAs === void 0 ? {} : { seenAs: term10.seenAs },
7649
- slug: term10.slug,
7650
- ...term10.span === void 0 ? {} : { span: term10.span },
7651
- ...term10.styleKind === void 0 ? {} : { styleKind: term10.styleKind },
7839
+ ...term12.rank === void 0 ? {} : { rank: term12.rank },
7840
+ ...term12.searchedWithout === void 0 ? {} : { searchedWithout: term12.searchedWithout },
7841
+ ...term12.seenAs === void 0 ? {} : { seenAs: term12.seenAs },
7842
+ slug: term12.slug,
7843
+ ...term12.span === void 0 ? {} : { span: term12.span },
7844
+ ...term12.styleKind === void 0 ? {} : { styleKind: term12.styleKind },
7652
7845
  uri,
7653
- ...term10.usage === void 0 ? {} : { usage: term10.usage },
7654
- ...term10.usageWithheld === void 0 ? {} : { usageWithheld: term10.usageWithheld }
7846
+ ...term12.usage === void 0 ? {} : { usage: term12.usage },
7847
+ ...term12.usageWithheld === void 0 ? {} : { usageWithheld: term12.usageWithheld }
7655
7848
  });
7656
7849
  assembly.edges.push(
7657
- governedEdge(uri, "belongs-to-axis", axisUri, term10),
7658
- governedEdge(axisUri, "has-concept", uri, term10, "inverse"),
7659
- governedEdge(uri, "belongs-to-facet", facetUri, term10),
7660
- governedEdge(facetUri, "has-concept", uri, term10, "inverse")
7850
+ governedEdge(uri, "belongs-to-axis", axisUri, term12),
7851
+ governedEdge(axisUri, "has-concept", uri, term12, "inverse"),
7852
+ governedEdge(uri, "belongs-to-facet", facetUri, term12),
7853
+ governedEdge(facetUri, "has-concept", uri, term12, "inverse")
7661
7854
  );
7662
7855
  }
7663
7856
  }
@@ -7856,7 +8049,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
7856
8049
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
7857
8050
  ],
7858
8051
  "The former combined pattern label names two distinct motif readings. It does not identify an installation layout or physical unit shape without separate evidence.",
7859
- "Linear TAX-45 reviewed implementation contract and independent review comment c457ef92-372b-4db0-8490-0b96ecccc8ac",
8052
+ "Linear TAX-45 reviewed implementation contract",
7860
8053
  TAX45_REVIEW_SNAPSHOT,
7861
8054
  {
7862
8055
  introducedAt: TAX45_REVIEW_SNAPSHOT,
@@ -7871,8 +8064,8 @@ var AUTHORED_LEXICAL_ENTRIES = [
7871
8064
  `${TAXONOMY_BASE_URI}/id/pattern/type/herringbone`,
7872
8065
  `${TAXONOMY_BASE_URI}/id/pattern/type/chevron`
7873
8066
  ],
7874
- "The DesignShop compound source phrase did not record which of the two distinct motif readings was intended.",
7875
- "DesignShop frozen estate pattern vocabulary, reconciled by Linear TAX-45 on 2026-08-31",
8067
+ "The furnishings retailer's compound phrase did not record which of the two distinct motif readings was intended.",
8068
+ `${RETAIL_PATTERN_SOURCE}, reconciled by Linear TAX-45`,
7876
8069
  TAX45_REVIEW_SNAPSHOT,
7877
8070
  {
7878
8071
  introducedAt: TAX45_REVIEW_SNAPSHOT,
@@ -7889,7 +8082,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
7889
8082
  ],
7890
8083
  "Mosaic can name a purchasable mosaic-tile product or the small-piece supply format; it is neither inherently a pattern nor a substance. Consumers must union any exact ColorScope named-paint reading with these domain readings rather than let an exact Taxonomy phrase shadow the external identity.",
7891
8084
  `${searchCorpusEvidence("mosaic")}; Uniclass Pr_35_93_96_53 Mosaic tiles; consumer authority-union boundary reviewed 2026-08-31`,
7892
- MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
8085
+ SEARCH_CORPUS_SNAPSHOT,
7893
8086
  {
7894
8087
  introducedAt: TAX45_REVIEW_SNAPSHOT,
7895
8088
  reviewedAt: TAX45_REVIEW_SNAPSHOT,
@@ -8182,10 +8375,10 @@ var AUTHORED_LEXICAL_ENTRIES = [
8182
8375
  `${TAXONOMY_BASE_URI}/id/material/limestone`,
8183
8376
  "Limestone has one governed carbonate-stone reading in this corpus; formation, quarry, grade, cut, finish, and similarly named paint identities remain separate, and ColorScope 7.3 has no exact named-colour identity.",
8184
8377
  crossoverSource("limestone"),
8185
- TAXONOMY_SNAPSHOT,
8378
+ LIMESTONE_INTRODUCED,
8186
8379
  {
8187
- introducedAt: TAXONOMY_SNAPSHOT,
8188
- reviewedAt: TAXONOMY_SNAPSHOT,
8380
+ introducedAt: LIMESTONE_INTRODUCED,
8381
+ reviewedAt: LIMESTONE_INTRODUCED,
8189
8382
  status: "active"
8190
8383
  }
8191
8384
  ),
@@ -8250,16 +8443,16 @@ var targetForLocation = (location) => {
8250
8443
  )
8251
8444
  };
8252
8445
  };
8253
- var lexicalPhrases = (term10) => [term10.slug, term10.label, ...term10.altLabels ?? [], ...term10.seenAs ?? []].map((phrase) => phrase.trim().toLowerCase()).filter(
8446
+ var lexicalPhrases = (term12) => [term12.slug, term12.label, ...term12.altLabels ?? [], ...term12.seenAs ?? []].map((phrase) => phrase.trim().toLowerCase()).filter(
8254
8447
  (phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
8255
8448
  );
8256
8449
  var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
8257
8450
  var inferredLifecycle = (readings) => {
8258
8451
  const terms = readings.flatMap((reading) => reading.terms);
8259
- const lifecycles = terms.map((term10) => lifecycleFor(term10));
8260
- const [introducedAt] = terms.map((term10) => term10.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
8452
+ const lifecycles = terms.map((term12) => lifecycleFor(term12));
8453
+ const [introducedAt] = terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
8261
8454
  const reviewedAt = terms.map(
8262
- (term10) => term10.reviewedAt ?? term10.introducedAt ?? PUBLISHED_V1_BASELINE
8455
+ (term12) => term12.reviewedAt ?? term12.introducedAt ?? PUBLISHED_V1_BASELINE
8263
8456
  ).toSorted(compareText).at(-1);
8264
8457
  if (introducedAt === void 0 || reviewedAt === void 0) {
8265
8458
  throw new Error("Inferred lexical reading has no source term lifecycle.");