@unified-product-graph/core 0.9.18 → 0.9.19

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
@@ -18637,7 +18637,7 @@ declare const ENTITY_EMOJI: Record<string, string>;
18637
18637
  /**
18638
18638
  * UPG canonical tree patterns: the named, server-owned shapes the `get_tree`
18639
18639
  * tool assembles (OST, OKR, user, product, validation, strategy, feature areas,
18640
- * delivery).
18640
+ * delivery, architecture, journey, design system) — one per tree-shaped region.
18641
18641
  *
18642
18642
  * A tree pattern is anchor + a TYPE-DRIVEN child map, NOT a list of edge names.
18643
18643
  * `get_tree` roots at `anchor_type` (falling back through `fallback_anchors` when
@@ -21158,7 +21158,7 @@ declare function isCanonical(text: string): boolean;
21158
21158
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21159
21159
  * The `check:version-lockstep` gate enforces this at release time.
21160
21160
  */
21161
- declare const UPG_VERSION: "0.9.18";
21161
+ declare const UPG_VERSION: "0.9.19";
21162
21162
  /**
21163
21163
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21164
21164
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.d.ts CHANGED
@@ -18637,7 +18637,7 @@ declare const ENTITY_EMOJI: Record<string, string>;
18637
18637
  /**
18638
18638
  * UPG canonical tree patterns: the named, server-owned shapes the `get_tree`
18639
18639
  * tool assembles (OST, OKR, user, product, validation, strategy, feature areas,
18640
- * delivery).
18640
+ * delivery, architecture, journey, design system) — one per tree-shaped region.
18641
18641
  *
18642
18642
  * A tree pattern is anchor + a TYPE-DRIVEN child map, NOT a list of edge names.
18643
18643
  * `get_tree` roots at `anchor_type` (falling back through `fallback_anchors` when
@@ -21158,7 +21158,7 @@ declare function isCanonical(text: string): boolean;
21158
21158
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21159
21159
  * The `check:version-lockstep` gate enforces this at release time.
21160
21160
  */
21161
- declare const UPG_VERSION: "0.9.18";
21161
+ declare const UPG_VERSION: "0.9.19";
21162
21162
  /**
21163
21163
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21164
21164
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.js CHANGED
@@ -19770,19 +19770,88 @@ var UPG_TREE_PATTERNS = [
19770
19770
  {
19771
19771
  id: "delivery",
19772
19772
  label: "Delivery roadmap",
19773
- description: "How product work is scheduled and shipped: the roadmap and its themes/items, the releases they schedule, and the features (with optional epic + user story tiers) they deliver.",
19773
+ description: "How product work is scheduled and shipped: the roadmap and its themes/items, the releases they schedule, the features (and the changelog + bugs) those releases deliver, and the feature areas a theme spans. Optional epic + user story tiers appear on request.",
19774
19774
  anchor_type: "roadmap",
19775
- fallback_anchors: ["product", "release"],
19775
+ // Fallback is the product alone: a graph with no roadmap roots at the
19776
+ // product (product -> release -> feature), reported as anchor_resolved_from:
19777
+ // roadmap. `release` is deliberately NOT a fallback root — a 32-release
19778
+ // forest would out-node the product and shadow it under the most-nodes rule.
19779
+ fallback_anchors: ["product"],
19776
19780
  child_map: {
19777
- product: [opt("roadmap"), opt("release")],
19781
+ // product holds releases directly (the delivery axis without a roadmap),
19782
+ // but NOT the roadmap: listing roadmap here made the product a superset of
19783
+ // the roadmap, so the most-nodes anchor rule rooted delivery at the product
19784
+ // even when a roadmap existed. Dropping it lets the roadmap win when present.
19785
+ product: [opt("release")],
19778
19786
  roadmap: [opt("roadmap_theme"), opt("roadmap_item"), opt("release")],
19779
- roadmap_theme: [opt("feature")],
19787
+ roadmap_theme: [opt("feature"), opt("feature_area")],
19780
19788
  roadmap_item: [opt("feature")],
19781
- release: [opt("feature")],
19789
+ release: [opt("feature"), opt("changelog"), opt("bug")],
19782
19790
  feature: [opt("epic")],
19783
19791
  epic: [opt("user_story")]
19784
19792
  },
19785
- natural_depth: 5
19793
+ // Default to 3 tiers (roadmap -> theme/item/release -> feature) for a
19794
+ // readable overview on a many-release roadmap; `depth` extends into
19795
+ // epic -> user_story.
19796
+ natural_depth: 3
19797
+ },
19798
+ {
19799
+ id: "architecture",
19800
+ label: "Architecture",
19801
+ description: "The engineering platform: services and the API contracts, endpoints, schemas, queues, deployments, and dependencies they own, grouped by bounded context, with domain aggregates and their members. A DAG (a schema or queue shared by several services renders once, then as a reference).",
19802
+ anchor_type: "service",
19803
+ fallback_anchors: ["bounded_context"],
19804
+ child_map: {
19805
+ bounded_context: [
19806
+ opt("service"),
19807
+ opt("external_api"),
19808
+ opt("data_flow"),
19809
+ opt("integration_pattern"),
19810
+ opt("code_repository"),
19811
+ opt("api_contract"),
19812
+ opt("aggregate"),
19813
+ opt("domain_event")
19814
+ ],
19815
+ service: [
19816
+ opt("api_contract"),
19817
+ opt("api_endpoint"),
19818
+ opt("database_schema"),
19819
+ opt("queue_topic"),
19820
+ opt("deployment"),
19821
+ opt("build_artifact"),
19822
+ opt("library_dependency"),
19823
+ opt("feature_flag")
19824
+ ],
19825
+ aggregate: [opt("domain_entity"), opt("value_object"), opt("command"), opt("read_model"), opt("domain_event")]
19826
+ },
19827
+ natural_depth: 3
19828
+ },
19829
+ {
19830
+ id: "journey",
19831
+ label: "User journey",
19832
+ description: "A user journey over time: its phases and steps, the actions within each step, and the screens those steps surface. Falls back to a user_flow when journeys are not yet mapped.",
19833
+ anchor_type: "user_journey",
19834
+ fallback_anchors: ["user_flow"],
19835
+ child_map: {
19836
+ user_journey: [opt("journey_phase"), opt("journey_step")],
19837
+ journey_phase: [opt("journey_step")],
19838
+ journey_step: [opt("journey_action"), opt("screen")],
19839
+ user_flow: [opt("screen")],
19840
+ screen: [opt("screen_state")]
19841
+ },
19842
+ natural_depth: 3
19843
+ },
19844
+ {
19845
+ id: "design_system",
19846
+ label: "Design system",
19847
+ description: "A design system broken into its components, their nested sub-components (atom to molecule to organism), and the design tokens they consume.",
19848
+ anchor_type: "design_system",
19849
+ fallback_anchors: ["design_component"],
19850
+ child_map: {
19851
+ design_system: [opt("design_component"), opt("design_token")],
19852
+ design_component: [opt("design_component"), opt("design_token")]
19853
+ },
19854
+ natural_depth: 3
19786
19855
  }
19787
19856
  ];
19788
19857
  var UPG_TREE_PATTERNS_BY_ID = Object.fromEntries(
@@ -28095,7 +28164,7 @@ function isCanonical(text) {
28095
28164
  }
28096
28165
 
28097
28166
  // src/index.ts
28098
- var UPG_VERSION = "0.9.18";
28167
+ var UPG_VERSION = "0.9.19";
28099
28168
  var UPG_FORMAT_VERSION = "0.4.0";
28100
28169
  var MARKDOWN_FORMAT_VERSION = "0.1";
28101
28170
  var UPG_TYPES = getTypes();