@unified-product-graph/core 0.12.6 → 0.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1633,6 +1633,13 @@ declare const UPG_EDGE_CATALOG: {
1633
1633
  source_type: string;
1634
1634
  target_type: string;
1635
1635
  };
1636
+ product_expresses_brand_identity: {
1637
+ forward_verb: string;
1638
+ reverse_verb: string;
1639
+ classification: "semantic";
1640
+ source_type: string;
1641
+ target_type: string;
1642
+ };
1636
1643
  design_system_encompasses_user_journey: {
1637
1644
  forward_verb: string;
1638
1645
  reverse_verb: string;
@@ -1710,6 +1717,13 @@ declare const UPG_EDGE_CATALOG: {
1710
1717
  source_type: string;
1711
1718
  target_type: string;
1712
1719
  };
1720
+ screen_markets_product: {
1721
+ forward_verb: string;
1722
+ reverse_verb: string;
1723
+ classification: "semantic";
1724
+ source_type: string;
1725
+ target_type: string;
1726
+ };
1713
1727
  screen_navigates_to_screen: {
1714
1728
  forward_verb: string;
1715
1729
  reverse_verb: string;
@@ -7482,7 +7496,7 @@ interface UPGProduct {
7482
7496
  /** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
7483
7497
  type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
7484
7498
  /** The set of valid cross-product relationship types */
7485
- type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage' | 'screen_markets_product';
7499
+ type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage' | 'screen_markets_product' | 'screen_renders_design_component' | 'product_expresses_brand_identity';
7486
7500
  /**
7487
7501
  * Runtime-checkable list of valid cross-product edge types. Mirrors
7488
7502
  * `UPGCrossEdgeType` for use in validators and writers that need to test
@@ -21834,7 +21848,7 @@ declare function isCanonical(text: string): boolean;
21834
21848
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21835
21849
  * The `check:version-lockstep` gate enforces this at release time.
21836
21850
  */
21837
- declare const UPG_VERSION: "0.12.6";
21851
+ declare const UPG_VERSION: "0.12.7";
21838
21852
  /**
21839
21853
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21840
21854
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.d.ts CHANGED
@@ -1633,6 +1633,13 @@ declare const UPG_EDGE_CATALOG: {
1633
1633
  source_type: string;
1634
1634
  target_type: string;
1635
1635
  };
1636
+ product_expresses_brand_identity: {
1637
+ forward_verb: string;
1638
+ reverse_verb: string;
1639
+ classification: "semantic";
1640
+ source_type: string;
1641
+ target_type: string;
1642
+ };
1636
1643
  design_system_encompasses_user_journey: {
1637
1644
  forward_verb: string;
1638
1645
  reverse_verb: string;
@@ -1710,6 +1717,13 @@ declare const UPG_EDGE_CATALOG: {
1710
1717
  source_type: string;
1711
1718
  target_type: string;
1712
1719
  };
1720
+ screen_markets_product: {
1721
+ forward_verb: string;
1722
+ reverse_verb: string;
1723
+ classification: "semantic";
1724
+ source_type: string;
1725
+ target_type: string;
1726
+ };
1713
1727
  screen_navigates_to_screen: {
1714
1728
  forward_verb: string;
1715
1729
  reverse_verb: string;
@@ -7482,7 +7496,7 @@ interface UPGProduct {
7482
7496
  /** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
7483
7497
  type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
7484
7498
  /** The set of valid cross-product relationship types */
7485
- type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage' | 'screen_markets_product';
7499
+ type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage' | 'screen_markets_product' | 'screen_renders_design_component' | 'product_expresses_brand_identity';
7486
7500
  /**
7487
7501
  * Runtime-checkable list of valid cross-product edge types. Mirrors
7488
7502
  * `UPGCrossEdgeType` for use in validators and writers that need to test
@@ -21834,7 +21848,7 @@ declare function isCanonical(text: string): boolean;
21834
21848
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21835
21849
  * The `check:version-lockstep` gate enforces this at release time.
21836
21850
  */
21837
- declare const UPG_VERSION: "0.12.6";
21851
+ declare const UPG_VERSION: "0.12.7";
21838
21852
  /**
21839
21853
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21840
21854
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.js CHANGED
@@ -1444,6 +1444,11 @@ var UPG_EDGE_CATALOG = {
1444
1444
  design_system_defines_design_token: { forward_verb: "defines", reverse_verb: "defined_in", classification: "hierarchy", source_type: "design_system", target_type: "design_token" },
1445
1445
  design_system_codified_in_design_guideline: { forward_verb: "codified_in", reverse_verb: "codifies", classification: "hierarchy", source_type: "design_system", target_type: "design_guideline" },
1446
1446
  design_system_expresses_brand_identity: { forward_verb: "expresses", reverse_verb: "expressed_in", classification: "hierarchy", source_type: "design_system", target_type: "brand_identity" },
1447
+ // Product expresses the brand (0.12.7, UPG-698). A product references the shared
1448
+ // brand_identity. Dual-registered: also a cross-edge for the common case where the
1449
+ // brand is a registry singleton in another graph (the ratified pattern: brand is a
1450
+ // singleton expressed, not instance_of-d); this catalog entry is the within-graph case.
1451
+ product_expresses_brand_identity: { forward_verb: "expresses", reverse_verb: "expressed_by", classification: "semantic", source_type: "product", target_type: "brand_identity" },
1447
1452
  design_system_encompasses_user_journey: { forward_verb: "encompasses", reverse_verb: "encompassed_in", classification: "hierarchy", source_type: "design_system", target_type: "user_journey" },
1448
1453
  design_system_encompasses_user_flow: { forward_verb: "encompasses", reverse_verb: "encompassed_in", classification: "hierarchy", source_type: "design_system", target_type: "user_flow" },
1449
1454
  design_system_informed_by_insight: { forward_verb: "informed_by", reverse_verb: "informs", classification: "hierarchy", source_type: "design_system", target_type: "insight" },
@@ -1456,6 +1461,11 @@ var UPG_EDGE_CATALOG = {
1456
1461
  design_component_composes_design_component: { forward_verb: "composes", reverse_verb: "composed_in", classification: "hierarchy", source_type: "design_component", target_type: "design_component" },
1457
1462
  prototype_annotated_with_annotation: { forward_verb: "annotated_with", reverse_verb: "annotates", classification: "hierarchy", source_type: "prototype", target_type: "annotation" },
1458
1463
  screen_renders_design_component: { forward_verb: "renders", reverse_verb: "rendered_on", classification: "hierarchy", source_type: "screen", target_type: "design_component" },
1464
+ // Marketing surface to product (0.12.7, UPG-696/698). A marketing/landing screen
1465
+ // markets a product. Dual-registered: also a cross-edge (UPG_CROSS_EDGE_TYPES) for
1466
+ // the common case where the product lives in another graph; this catalog entry is
1467
+ // the within-graph degenerate case (a product's own landing page).
1468
+ screen_markets_product: { forward_verb: "markets", reverse_verb: "marketed_by", classification: "semantic", source_type: "screen", target_type: "product" },
1459
1469
  screen_navigates_to_screen: { forward_verb: "navigates_to", reverse_verb: "navigated_from", classification: "hierarchy", source_type: "screen", target_type: "screen" },
1460
1470
  screen_surfaces_feature: { forward_verb: "surfaces", reverse_verb: "surfaced_on", classification: "cross-domain", source_type: "screen", target_type: "feature" },
1461
1471
  screen_wireframed_as_wireframe: { forward_verb: "wireframed_as", reverse_verb: "wireframes", classification: "hierarchy", source_type: "screen", target_type: "wireframe" },
@@ -3133,7 +3143,9 @@ var UPG_CROSS_EDGE_TYPES = [
3133
3143
  "competitor_classified_as_classification_value",
3134
3144
  "node_classified_as_classification_value",
3135
3145
  "journey_phase_realises_operating_stage",
3136
- "screen_markets_product"
3146
+ "screen_markets_product",
3147
+ "screen_renders_design_component",
3148
+ "product_expresses_brand_identity"
3137
3149
  ];
3138
3150
  var REGISTRY_PRODUCT_ID = "registry";
3139
3151
 
@@ -29238,7 +29250,7 @@ function isCanonical(text) {
29238
29250
  }
29239
29251
 
29240
29252
  // src/index.ts
29241
- var UPG_VERSION = "0.12.6";
29253
+ var UPG_VERSION = "0.12.7";
29242
29254
  var UPG_FORMAT_VERSION = "0.4.0";
29243
29255
  var MARKDOWN_FORMAT_VERSION = "0.1";
29244
29256
  var UPG_TYPES = getTypes();