@unified-product-graph/core 0.9.13 → 0.9.15
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/CHANGELOG.md +35 -0
- package/dist/index.cjs +773 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +85 -5
- package/dist/index.d.ts +85 -5
- package/dist/index.js +768 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -25,8 +25,10 @@ __export(index_exports, {
|
|
|
25
25
|
BUSINESS_GTM_GROWTH_PLAYBOOK: () => BUSINESS_GTM_GROWTH_PLAYBOOK,
|
|
26
26
|
BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK: () => BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK,
|
|
27
27
|
CONTENT_DEPTH_WARNING_RULES: () => CONTENT_DEPTH_WARNING_RULES,
|
|
28
|
+
DEFAULT_ENTITY_EMOJI: () => DEFAULT_ENTITY_EMOJI,
|
|
28
29
|
DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK: () => DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
|
|
29
30
|
ENGINEERING_PLATFORM_PLAYBOOK: () => ENGINEERING_PLATFORM_PLAYBOOK,
|
|
31
|
+
ENTITY_EMOJI: () => ENTITY_EMOJI,
|
|
30
32
|
EXPERIENCE_DESIGN_BRAND_PLAYBOOK: () => EXPERIENCE_DESIGN_BRAND_PLAYBOOK,
|
|
31
33
|
FOUNDATIONS_PLAYBOOK: () => FOUNDATIONS_PLAYBOOK,
|
|
32
34
|
LEGACY_PRODUCT_STAGES: () => LEGACY_PRODUCT_STAGES,
|
|
@@ -89,6 +91,8 @@ __export(index_exports, {
|
|
|
89
91
|
UPG_SPLIT_MIGRATIONS: () => UPG_SPLIT_MIGRATIONS,
|
|
90
92
|
UPG_STATUS_MIGRATIONS: () => UPG_STATUS_MIGRATIONS,
|
|
91
93
|
UPG_STRUCTURE_PATTERNS: () => UPG_STRUCTURE_PATTERNS,
|
|
94
|
+
UPG_TREE_PATTERNS: () => UPG_TREE_PATTERNS,
|
|
95
|
+
UPG_TREE_PATTERNS_BY_ID: () => UPG_TREE_PATTERNS_BY_ID,
|
|
92
96
|
UPG_TYPES: () => UPG_TYPES,
|
|
93
97
|
UPG_TYPES_SET: () => UPG_TYPES_SET,
|
|
94
98
|
UPG_TYPE_ALIASES: () => UPG_TYPE_ALIASES,
|
|
@@ -147,6 +151,7 @@ __export(index_exports, {
|
|
|
147
151
|
getRingForDomain: () => getRingForDomain,
|
|
148
152
|
getScale: () => getScale,
|
|
149
153
|
getSplitMigrations: () => getSplitMigrations,
|
|
154
|
+
getTreePattern: () => getTreePattern,
|
|
150
155
|
getTypeId: () => getTypeId,
|
|
151
156
|
getTypeName: () => getTypeName,
|
|
152
157
|
getTypes: () => getTypes,
|
|
@@ -7421,6 +7426,22 @@ function getDeprecatedTypes() {
|
|
|
7421
7426
|
return deprecated;
|
|
7422
7427
|
}
|
|
7423
7428
|
var UPG_PROPERTY_MIGRATIONS = {
|
|
7429
|
+
// ── v0.9.14: drop the key_result kr_status / status twin (A2) ──────────────
|
|
7430
|
+
//
|
|
7431
|
+
// key_result carried BOTH a lifecycle `status` and a `kr_status` property with
|
|
7432
|
+
// the identical four-value enum (on_track | at_risk | behind | achieved) ==
|
|
7433
|
+
// the KEY_RESULT_LIFECYCLE phases. Two fields, same values: an authoring trap.
|
|
7434
|
+
// The redundant property is removed; the authored health value lifts to the
|
|
7435
|
+
// canonical `UPGBaseNode.status` so a graph that set `kr_status` stays correct.
|
|
7436
|
+
"0.9.14": [
|
|
7437
|
+
{
|
|
7438
|
+
kind: "lift_property_to_top_level",
|
|
7439
|
+
type: "key_result",
|
|
7440
|
+
from_property: "kr_status",
|
|
7441
|
+
to: "status",
|
|
7442
|
+
reason: "A2 (0.9.14). key_result.kr_status duplicated the lifecycle `status` with the identical enum (on_track | at_risk | behind | achieved). The twin is removed; the authored health value lifts to `UPGBaseNode.status` verbatim."
|
|
7443
|
+
}
|
|
7444
|
+
],
|
|
7424
7445
|
// ── v0.9.12: technical-domain enum widening + data_flow orientation split ──
|
|
7425
7446
|
//
|
|
7426
7447
|
// Real authoring outgrew four engineering-domain enums. 0.9.12 widens them
|
|
@@ -10874,8 +10895,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10874
10895
|
key_result: {
|
|
10875
10896
|
current_value: { type: "number", description: "Most recent observed value" },
|
|
10876
10897
|
target_value: { type: "number", description: "Value for full achievement" },
|
|
10877
|
-
unit: { type: "string", description: 'Display unit (e.g. "%", "users", "\xA3")' }
|
|
10878
|
-
kr_status: { type: "string", enum: ["on_track", "at_risk", "behind", "achieved"], description: "Delivery health" }
|
|
10898
|
+
unit: { type: "string", description: 'Display unit (e.g. "%", "users", "\xA3")' }
|
|
10879
10899
|
},
|
|
10880
10900
|
// KnowledgeBaseArticleProperties: Knowledge base article.
|
|
10881
10901
|
knowledge_base_article: {
|
|
@@ -17787,6 +17807,324 @@ var UPG_FRAMEWORKS = [
|
|
|
17787
17807
|
"Time pressure makes a deeper trace expensive and the first-order call is good enough"
|
|
17788
17808
|
]
|
|
17789
17809
|
}
|
|
17810
|
+
},
|
|
17811
|
+
{
|
|
17812
|
+
"id": "value-vs-effort",
|
|
17813
|
+
"approach_ids": [
|
|
17814
|
+
"prioritise"
|
|
17815
|
+
],
|
|
17816
|
+
"name": "Value vs Effort",
|
|
17817
|
+
"version": "1.0.0",
|
|
17818
|
+
"description": "Plot features on a 2x2 matrix of value against effort. Quick wins (high value, low effort) get prioritised first.",
|
|
17819
|
+
"category": "prioritization",
|
|
17820
|
+
"origin": {
|
|
17821
|
+
"type": "practitioner",
|
|
17822
|
+
"description": "Common product management prioritisation tool. A simplified form of cost-benefit analysis.",
|
|
17823
|
+
"license": "cc_by"
|
|
17824
|
+
},
|
|
17825
|
+
"tags": [
|
|
17826
|
+
"prioritization",
|
|
17827
|
+
"quadrant"
|
|
17828
|
+
],
|
|
17829
|
+
"slots": [
|
|
17830
|
+
{
|
|
17831
|
+
"label": "Quick Wins",
|
|
17832
|
+
"entityTypeId": "feature",
|
|
17833
|
+
"role": "quick_win",
|
|
17834
|
+
"description": "High value, low effort: do first"
|
|
17835
|
+
},
|
|
17836
|
+
{
|
|
17837
|
+
"label": "Big Bets",
|
|
17838
|
+
"entityTypeId": "feature",
|
|
17839
|
+
"role": "big_bet",
|
|
17840
|
+
"description": "High value, high effort: plan carefully"
|
|
17841
|
+
},
|
|
17842
|
+
{
|
|
17843
|
+
"label": "Fill-ins",
|
|
17844
|
+
"entityTypeId": "feature",
|
|
17845
|
+
"role": "fill_in",
|
|
17846
|
+
"description": "Low value, low effort: do when idle"
|
|
17847
|
+
},
|
|
17848
|
+
{
|
|
17849
|
+
"label": "Avoid",
|
|
17850
|
+
"entityTypeId": "feature",
|
|
17851
|
+
"role": "money_pit",
|
|
17852
|
+
"description": "Low value, high effort: deprioritise"
|
|
17853
|
+
}
|
|
17854
|
+
],
|
|
17855
|
+
"data": {
|
|
17856
|
+
"entity_types": [
|
|
17857
|
+
{
|
|
17858
|
+
"type": "feature",
|
|
17859
|
+
"role": "item"
|
|
17860
|
+
}
|
|
17861
|
+
],
|
|
17862
|
+
"required_properties": {
|
|
17863
|
+
"feature": [
|
|
17864
|
+
{
|
|
17865
|
+
"property": "value",
|
|
17866
|
+
"type": "number",
|
|
17867
|
+
"required": true,
|
|
17868
|
+
"label": "Value",
|
|
17869
|
+
"description": "Expected business value (1-10)"
|
|
17870
|
+
},
|
|
17871
|
+
{
|
|
17872
|
+
"property": "effort",
|
|
17873
|
+
"type": "number",
|
|
17874
|
+
"required": true,
|
|
17875
|
+
"label": "Effort",
|
|
17876
|
+
"description": "Implementation effort (1-10)"
|
|
17877
|
+
}
|
|
17878
|
+
]
|
|
17879
|
+
},
|
|
17880
|
+
"computed_properties": [
|
|
17881
|
+
{
|
|
17882
|
+
"property": "value_effort_ratio",
|
|
17883
|
+
"expression": "value / effort",
|
|
17884
|
+
"entity_type": "feature",
|
|
17885
|
+
"label": "Value/Effort Ratio",
|
|
17886
|
+
"format": "number"
|
|
17887
|
+
}
|
|
17888
|
+
]
|
|
17889
|
+
},
|
|
17890
|
+
"structure": {
|
|
17891
|
+
"pattern": "quadrant"
|
|
17892
|
+
},
|
|
17893
|
+
"presentation": {
|
|
17894
|
+
"layout": {
|
|
17895
|
+
"type": "quadrant",
|
|
17896
|
+
"x_axis": "impact",
|
|
17897
|
+
"y_axis": "effort",
|
|
17898
|
+
"x_label": "Quick Wins",
|
|
17899
|
+
"y_label": "Big Bets"
|
|
17900
|
+
},
|
|
17901
|
+
"colour_by": "group",
|
|
17902
|
+
"card_fields": [
|
|
17903
|
+
"title",
|
|
17904
|
+
"description"
|
|
17905
|
+
]
|
|
17906
|
+
},
|
|
17907
|
+
"education": {
|
|
17908
|
+
"purpose": "Plot features on a value/effort matrix to identify quick wins (high value, low effort) and avoid resource traps (low value, high effort).",
|
|
17909
|
+
"core_question": "Which features give us the best return on engineering investment, and which are traps disguised as good ideas?",
|
|
17910
|
+
"when_to_use": [
|
|
17911
|
+
"You have more ideas or features than capacity to build them",
|
|
17912
|
+
"Stakeholders disagree on what to build next",
|
|
17913
|
+
"You need a transparent, defensible prioritisation process"
|
|
17914
|
+
],
|
|
17915
|
+
"when_not_to_use": [
|
|
17916
|
+
"You have a single obvious next step with no contention",
|
|
17917
|
+
"The backlog is small enough to sequence intuitively"
|
|
17918
|
+
]
|
|
17919
|
+
}
|
|
17920
|
+
},
|
|
17921
|
+
{
|
|
17922
|
+
"id": "eisenhower-matrix",
|
|
17923
|
+
"approach_ids": [
|
|
17924
|
+
"prioritise"
|
|
17925
|
+
],
|
|
17926
|
+
"name": "Eisenhower Matrix",
|
|
17927
|
+
"version": "1.0.0",
|
|
17928
|
+
"description": "Classify tasks by urgency and importance into four quadrants: do, schedule, delegate, or eliminate.",
|
|
17929
|
+
"category": "prioritization",
|
|
17930
|
+
"origin": {
|
|
17931
|
+
"type": "practitioner",
|
|
17932
|
+
"attribution": "Dwight D. Eisenhower",
|
|
17933
|
+
"description": "Based on a quote attributed to Eisenhower: 'What is important is seldom urgent and what is urgent is seldom important.' Popularised by Stephen Covey.",
|
|
17934
|
+
"license": "public_domain"
|
|
17935
|
+
},
|
|
17936
|
+
"tags": [
|
|
17937
|
+
"prioritization",
|
|
17938
|
+
"quadrant"
|
|
17939
|
+
],
|
|
17940
|
+
"slots": [
|
|
17941
|
+
{
|
|
17942
|
+
"label": "Do First",
|
|
17943
|
+
"entityTypeId": "feature",
|
|
17944
|
+
"role": "do_first",
|
|
17945
|
+
"description": "Urgent and important: act immediately"
|
|
17946
|
+
},
|
|
17947
|
+
{
|
|
17948
|
+
"label": "Schedule",
|
|
17949
|
+
"entityTypeId": "feature",
|
|
17950
|
+
"role": "schedule",
|
|
17951
|
+
"description": "Important but not urgent: plan it"
|
|
17952
|
+
},
|
|
17953
|
+
{
|
|
17954
|
+
"label": "Delegate",
|
|
17955
|
+
"entityTypeId": "feature",
|
|
17956
|
+
"role": "delegate",
|
|
17957
|
+
"description": "Urgent but not important: hand off"
|
|
17958
|
+
},
|
|
17959
|
+
{
|
|
17960
|
+
"label": "Eliminate",
|
|
17961
|
+
"entityTypeId": "feature",
|
|
17962
|
+
"role": "eliminate",
|
|
17963
|
+
"description": "Neither urgent nor important: drop it"
|
|
17964
|
+
}
|
|
17965
|
+
],
|
|
17966
|
+
"data": {
|
|
17967
|
+
"entity_types": [
|
|
17968
|
+
{
|
|
17969
|
+
"type": "feature",
|
|
17970
|
+
"role": "item"
|
|
17971
|
+
}
|
|
17972
|
+
],
|
|
17973
|
+
"required_properties": {
|
|
17974
|
+
"feature": [
|
|
17975
|
+
{
|
|
17976
|
+
"property": "urgency",
|
|
17977
|
+
"type": "number",
|
|
17978
|
+
"required": true,
|
|
17979
|
+
"label": "Urgency",
|
|
17980
|
+
"description": "How time-sensitive is this? (1-5)"
|
|
17981
|
+
},
|
|
17982
|
+
{
|
|
17983
|
+
"property": "importance",
|
|
17984
|
+
"type": "number",
|
|
17985
|
+
"required": true,
|
|
17986
|
+
"label": "Importance",
|
|
17987
|
+
"description": "How important is this to goals? (1-5)"
|
|
17988
|
+
}
|
|
17989
|
+
]
|
|
17990
|
+
},
|
|
17991
|
+
"computed_properties": [
|
|
17992
|
+
{
|
|
17993
|
+
"property": "priority_score",
|
|
17994
|
+
"expression": "(urgency * 2) + importance",
|
|
17995
|
+
"entity_type": "feature",
|
|
17996
|
+
"label": "Priority Score",
|
|
17997
|
+
"format": "number"
|
|
17998
|
+
}
|
|
17999
|
+
]
|
|
18000
|
+
},
|
|
18001
|
+
"structure": {
|
|
18002
|
+
"pattern": "quadrant"
|
|
18003
|
+
},
|
|
18004
|
+
"presentation": {
|
|
18005
|
+
"layout": {
|
|
18006
|
+
"type": "quadrant",
|
|
18007
|
+
"x_axis": "impact",
|
|
18008
|
+
"y_axis": "effort",
|
|
18009
|
+
"x_label": "Do First",
|
|
18010
|
+
"y_label": "Schedule"
|
|
18011
|
+
},
|
|
18012
|
+
"colour_by": "group",
|
|
18013
|
+
"card_fields": [
|
|
18014
|
+
"title",
|
|
18015
|
+
"description"
|
|
18016
|
+
]
|
|
18017
|
+
},
|
|
18018
|
+
"education": {
|
|
18019
|
+
"purpose": "Sort tasks by urgency and importance into four quadrants, making it clear what to do now, schedule, delegate, or eliminate.",
|
|
18020
|
+
"core_question": "Am I spending my time on what matters most, or am I trapped in the urgent-but-unimportant quadrant?",
|
|
18021
|
+
"when_to_use": [
|
|
18022
|
+
"You have more ideas or features than capacity to build them",
|
|
18023
|
+
"Stakeholders disagree on what to build next",
|
|
18024
|
+
"You need a transparent, defensible prioritisation process"
|
|
18025
|
+
],
|
|
18026
|
+
"when_not_to_use": [
|
|
18027
|
+
"You have a single obvious next step with no contention",
|
|
18028
|
+
"The backlog is small enough to sequence intuitively"
|
|
18029
|
+
]
|
|
18030
|
+
}
|
|
18031
|
+
},
|
|
18032
|
+
{
|
|
18033
|
+
"id": "four-forces-of-progress",
|
|
18034
|
+
"approach_ids": [
|
|
18035
|
+
"reflect"
|
|
18036
|
+
],
|
|
18037
|
+
"name": "Four Forces of Progress",
|
|
18038
|
+
"version": "1.0.0",
|
|
18039
|
+
"description": "Analyse the four forces that drive or inhibit customers switching to a new solution: Push, Pull, Anxiety, and Habit.",
|
|
18040
|
+
"category": "discovery",
|
|
18041
|
+
"origin": {
|
|
18042
|
+
"type": "practitioner",
|
|
18043
|
+
"attribution": "Bob Moesta",
|
|
18044
|
+
"description": "Demand-Side Sales 101",
|
|
18045
|
+
"url": "https://jobstobedone.org/",
|
|
18046
|
+
"year": 2014,
|
|
18047
|
+
"license": "published_methodology"
|
|
18048
|
+
},
|
|
18049
|
+
"tags": [
|
|
18050
|
+
"discovery",
|
|
18051
|
+
"matrix"
|
|
18052
|
+
],
|
|
18053
|
+
"slots": [
|
|
18054
|
+
{
|
|
18055
|
+
"label": "Push of Current Situation",
|
|
18056
|
+
"entityTypeId": "need",
|
|
18057
|
+
"role": "push",
|
|
18058
|
+
"description": "Place need entities in the Push of Current Situation position of the matrix"
|
|
18059
|
+
},
|
|
18060
|
+
{
|
|
18061
|
+
"label": "Pull of New Solution",
|
|
18062
|
+
"entityTypeId": "desired_outcome",
|
|
18063
|
+
"role": "pull",
|
|
18064
|
+
"description": "Place desired outcome entities in the Pull of New Solution position of the matrix"
|
|
18065
|
+
},
|
|
18066
|
+
{
|
|
18067
|
+
"label": "Anxiety of New Solution",
|
|
18068
|
+
"entityTypeId": "switching_cost",
|
|
18069
|
+
"role": "anxiety",
|
|
18070
|
+
"description": "Place switching cost entities in the Anxiety of New Solution position of the matrix"
|
|
18071
|
+
},
|
|
18072
|
+
{
|
|
18073
|
+
"label": "Habit of Current Situation",
|
|
18074
|
+
"entityTypeId": "switching_cost",
|
|
18075
|
+
"role": "habit",
|
|
18076
|
+
"description": "Place switching cost entities in the Habit of Current Situation position of the matrix"
|
|
18077
|
+
}
|
|
18078
|
+
],
|
|
18079
|
+
"data": {
|
|
18080
|
+
"entity_types": [
|
|
18081
|
+
{
|
|
18082
|
+
"type": "need",
|
|
18083
|
+
"role": "bucket"
|
|
18084
|
+
},
|
|
18085
|
+
{
|
|
18086
|
+
"type": "switching_cost",
|
|
18087
|
+
"role": "bucket"
|
|
18088
|
+
},
|
|
18089
|
+
{
|
|
18090
|
+
"type": "desired_outcome",
|
|
18091
|
+
"role": "bucket"
|
|
18092
|
+
}
|
|
18093
|
+
],
|
|
18094
|
+
"required_properties": {}
|
|
18095
|
+
},
|
|
18096
|
+
"structure": {
|
|
18097
|
+
"pattern": "matrix"
|
|
18098
|
+
},
|
|
18099
|
+
"presentation": {
|
|
18100
|
+
"layout": {
|
|
18101
|
+
"type": "matrix",
|
|
18102
|
+
"rows": 2,
|
|
18103
|
+
"cols": 2
|
|
18104
|
+
},
|
|
18105
|
+
"sort_by": {
|
|
18106
|
+
"property": "title",
|
|
18107
|
+
"direction": "asc"
|
|
18108
|
+
},
|
|
18109
|
+
"colour_by": "group",
|
|
18110
|
+
"card_fields": [
|
|
18111
|
+
"title",
|
|
18112
|
+
"description"
|
|
18113
|
+
]
|
|
18114
|
+
},
|
|
18115
|
+
"education": {
|
|
18116
|
+
"purpose": "Map the four forces that drive or resist a customer's switch to a new solution (Push, Pull, Anxiety, Habit) to understand why people change (or don't).",
|
|
18117
|
+
"core_question": "Are the push and pull forces strong enough to overcome the anxiety of the new and the comfort of the familiar?",
|
|
18118
|
+
"when_to_use": [
|
|
18119
|
+
"You need to understand unmet user needs before committing to solutions",
|
|
18120
|
+
"The problem space is ambiguous and requires structured exploration",
|
|
18121
|
+
"You want to reduce the risk of building the wrong thing"
|
|
18122
|
+
],
|
|
18123
|
+
"when_not_to_use": [
|
|
18124
|
+
"The solution is well-understood and validated",
|
|
18125
|
+
"You are in a delivery phase with clear requirements"
|
|
18126
|
+
]
|
|
18127
|
+
}
|
|
17790
18128
|
}
|
|
17791
18129
|
];
|
|
17792
18130
|
var UPG_FRAMEWORKS_BY_ID = Object.fromEntries(
|
|
@@ -18233,6 +18571,326 @@ function isUPGDocument(doc) {
|
|
|
18233
18571
|
return validateUPGDocument(doc).valid;
|
|
18234
18572
|
}
|
|
18235
18573
|
|
|
18574
|
+
// src/presentation/entity-emoji.ts
|
|
18575
|
+
var DEFAULT_ENTITY_EMOJI = "\u{1F4E6}";
|
|
18576
|
+
var ENTITY_EMOJI = {
|
|
18577
|
+
a11y_annotation: "\u{1F9BB}",
|
|
18578
|
+
a11y_audit: "\u267F",
|
|
18579
|
+
a11y_guideline: "\u{1F9AF}",
|
|
18580
|
+
a11y_issue: "\u{1F6AB}",
|
|
18581
|
+
a11y_standard: "\u{1F4CF}",
|
|
18582
|
+
acceptance_criterion: "\u2705",
|
|
18583
|
+
access_policy: "\u{1F511}",
|
|
18584
|
+
account: "\u{1F3E6}",
|
|
18585
|
+
acquisition_channel: "\u{1F3A3}",
|
|
18586
|
+
ad_creative: "\u{1F58C}\uFE0F",
|
|
18587
|
+
affinity_cluster: "\u{1F9F2}",
|
|
18588
|
+
agent_definition: "\u{1F9BE}",
|
|
18589
|
+
agent_hook: "\u{1F9F7}",
|
|
18590
|
+
agent_session: "\u{1F9D1}\u200D\u{1F4BB}",
|
|
18591
|
+
agent_skill: "\u{1FA84}",
|
|
18592
|
+
agent_task: "\u{1F3AB}",
|
|
18593
|
+
aggregate: "\u{1FAD9}",
|
|
18594
|
+
ai_cost_tracker: "\u{1F4B8}",
|
|
18595
|
+
ai_dataset: "\u{1FA86}",
|
|
18596
|
+
ai_experiment: "\u{1F47E}",
|
|
18597
|
+
ai_guardrail: "\u{1F6A6}",
|
|
18598
|
+
ai_model: "\u{1F916}",
|
|
18599
|
+
ai_trace: "\u{1FAA1}",
|
|
18600
|
+
alert_rule: "\u{1F6CE}\uFE0F",
|
|
18601
|
+
annotation: "\u{1F5EF}\uFE0F",
|
|
18602
|
+
api_contract: "\u{1F91D}",
|
|
18603
|
+
api_ecosystem: "\u{1F578}\uFE0F",
|
|
18604
|
+
api_endpoint: "\u{1F50C}",
|
|
18605
|
+
approval_record: "\u{1F50F}",
|
|
18606
|
+
assumption: "\u{1F914}",
|
|
18607
|
+
attribution_model: "\u{1F575}\uFE0F",
|
|
18608
|
+
audit_log_policy: "\u{1FAB5}",
|
|
18609
|
+
behavioral_segment: "\u{1F43E}",
|
|
18610
|
+
beta_program: "\u{1F423}",
|
|
18611
|
+
bounded_context: "\u{1F532}",
|
|
18612
|
+
brand_asset: "\u{1F5C2}\uFE0F",
|
|
18613
|
+
brand_colour: "\u{1F308}",
|
|
18614
|
+
brand_identity: "\u{1F4A0}",
|
|
18615
|
+
brand_imagery: "\u{1F5BC}\uFE0F",
|
|
18616
|
+
brand_logo: "\u{1F537}",
|
|
18617
|
+
brand_typography: "\u{1F524}",
|
|
18618
|
+
brand_voice: "\u{1F399}\uFE0F",
|
|
18619
|
+
bug: "\u{1F41B}",
|
|
18620
|
+
build_artifact: "\u{1F3FA}",
|
|
18621
|
+
business_model: "\u{1F4B0}",
|
|
18622
|
+
capability: "\u{1F4AA}",
|
|
18623
|
+
capacity_plan: "\u{1F5D3}\uFE0F",
|
|
18624
|
+
ceremony: "\u{1F514}",
|
|
18625
|
+
certification: "\u{1F3F5}\uFE0F",
|
|
18626
|
+
change_request: "\u270F\uFE0F",
|
|
18627
|
+
changelog: "\u{1F570}\uFE0F",
|
|
18628
|
+
churn_reason: "\u{1F494}",
|
|
18629
|
+
ci_pipeline: "\u{1F687}",
|
|
18630
|
+
classification_axis: "\u2194\uFE0F",
|
|
18631
|
+
classification_value: "\u{1F4CD}",
|
|
18632
|
+
code_repository: "\u{1F4BE}",
|
|
18633
|
+
cohort: "\u{1F465}",
|
|
18634
|
+
command: "\u2328\uFE0F",
|
|
18635
|
+
community_initiative: "\u{1F30D}",
|
|
18636
|
+
competitive_analysis: "\u{1F4CA}",
|
|
18637
|
+
competitive_battle_card: "\u2694\uFE0F",
|
|
18638
|
+
competitor: "\u{1F94A}",
|
|
18639
|
+
competitor_feature: "\u{1F52C}",
|
|
18640
|
+
compliance_framework: "\u{1F3DF}\uFE0F",
|
|
18641
|
+
compliance_requirement: "\u26F2",
|
|
18642
|
+
constraint: "\u{1F512}",
|
|
18643
|
+
contact: "\u{1F4C7}",
|
|
18644
|
+
content_calendar: "\u{1F4C5}",
|
|
18645
|
+
content_piece: "\u{1F5D2}\uFE0F",
|
|
18646
|
+
content_strategy: "\u270D\uFE0F",
|
|
18647
|
+
content_theme: "\u{1F4A1}",
|
|
18648
|
+
contract: "\u{1F4D1}",
|
|
18649
|
+
contract_clause: "\xA7",
|
|
18650
|
+
cost_structure: "\u{1F9EE}",
|
|
18651
|
+
cultural_adaptation: "\u{1F30F}",
|
|
18652
|
+
customer_feedback: "\u{1F536}",
|
|
18653
|
+
customer_health_score: "\u{1F49A}",
|
|
18654
|
+
customer_journey_stage: "\u{1F68F}",
|
|
18655
|
+
customer_relationship: "\u{1FAF6}",
|
|
18656
|
+
dashboard: "\u{1F39B}\uFE0F",
|
|
18657
|
+
data_classification: "\u{1F343}",
|
|
18658
|
+
data_contract: "\u{1F523}",
|
|
18659
|
+
data_domain: "\u{1F3F7}\uFE0F",
|
|
18660
|
+
data_flow: "\u2195\uFE0F",
|
|
18661
|
+
data_lineage: "\u{1F333}",
|
|
18662
|
+
data_model: "\u{1F5C3}\uFE0F",
|
|
18663
|
+
data_pipeline: "\u{1FAA3}",
|
|
18664
|
+
data_product: "\u{1F381}",
|
|
18665
|
+
data_quality_rule: "\u{1F9F9}",
|
|
18666
|
+
data_source: "\u{1F6E2}\uFE0F",
|
|
18667
|
+
database_schema: "\u{1F5C4}\uFE0F",
|
|
18668
|
+
deal: "\u{1F4BC}",
|
|
18669
|
+
decision: "\u2696\uFE0F",
|
|
18670
|
+
deliverable: "\u{1F380}",
|
|
18671
|
+
demand_gen_program: "\u{1F4E3}",
|
|
18672
|
+
department: "\u{1F3EC}",
|
|
18673
|
+
dependency: "\u26D3\uFE0F",
|
|
18674
|
+
deployment: "\u{1F4E4}",
|
|
18675
|
+
design_component: "\u{1F9F1}",
|
|
18676
|
+
design_concept: "\u{1F331}",
|
|
18677
|
+
design_guideline: "\u{1F4CC}",
|
|
18678
|
+
design_pattern: "\u{1F9E9}",
|
|
18679
|
+
design_question: "\u{1F4AD}",
|
|
18680
|
+
design_sprint: "\u{1F3C3}",
|
|
18681
|
+
design_system: "\u{1F9F0}",
|
|
18682
|
+
design_token: "\u{1FA99}",
|
|
18683
|
+
desired_outcome: "\u{1F31F}",
|
|
18684
|
+
developer_portal: "\u{1F391}",
|
|
18685
|
+
discount_strategy: "\u2702\uFE0F",
|
|
18686
|
+
distribution_channel: "\u{1F69A}",
|
|
18687
|
+
document: "\u{1F4C3}",
|
|
18688
|
+
documentation_template: "\u{1F58A}\uFE0F",
|
|
18689
|
+
domain_entity: "\u{1F4E6}",
|
|
18690
|
+
domain_event: "\u{1F4E1}",
|
|
18691
|
+
education_program: "\u{1F3EB}",
|
|
18692
|
+
email_sequence: "\u{1F4E7}",
|
|
18693
|
+
epic: "\u{1F4DC}",
|
|
18694
|
+
error_budget: "\u23F3",
|
|
18695
|
+
eval_benchmark: "\u{1F396}\uFE0F",
|
|
18696
|
+
eval_run: "\u{1F39F}\uFE0F",
|
|
18697
|
+
event: "\u{1F388}",
|
|
18698
|
+
event_schema: "\u{1F520}",
|
|
18699
|
+
evidence: "\u{1F50E}",
|
|
18700
|
+
experiment: "\u{1F9EB}",
|
|
18701
|
+
experiment_plan: "\u{1F4D0}",
|
|
18702
|
+
experiment_run: "\u25B6\uFE0F",
|
|
18703
|
+
external_api: "\u{1F310}",
|
|
18704
|
+
feasibility_study: "\u{1F3D7}\uFE0F",
|
|
18705
|
+
feature: "\u2B50",
|
|
18706
|
+
feature_area: "\u{1F4C1}",
|
|
18707
|
+
feature_flag: "\u{1F38C}",
|
|
18708
|
+
feature_request: "\u{1F64F}",
|
|
18709
|
+
feedback_program: "\u{1F3A4}",
|
|
18710
|
+
feedback_theme: "\u{1F4CE}",
|
|
18711
|
+
feedback_vote: "\u{1F44D}",
|
|
18712
|
+
fix: "\u{1FA9B}",
|
|
18713
|
+
forecast: "\u{1F52E}",
|
|
18714
|
+
framework_exercise: "\u{1F4CB}",
|
|
18715
|
+
funnel: "\u2B07\uFE0F",
|
|
18716
|
+
funnel_step: "\u{1F53D}",
|
|
18717
|
+
glossary_term: "\u{1F4D6}",
|
|
18718
|
+
growth_campaign: "\u{1F4E2}",
|
|
18719
|
+
growth_loop: "\u267E\uFE0F",
|
|
18720
|
+
gtm_strategy: "\u{1F3F9}",
|
|
18721
|
+
hallucination_report: "\u{1F47B}",
|
|
18722
|
+
help_video: "\u{1F3AC}",
|
|
18723
|
+
hypothesis: "\u{1F9EA}",
|
|
18724
|
+
ideal_customer_profile: "\u{1F464}",
|
|
18725
|
+
incident: "\u{1F6A8}",
|
|
18726
|
+
infrastructure_component: "\u{1F5A7}",
|
|
18727
|
+
initiative: "\u{1F680}",
|
|
18728
|
+
insight: "\u{1F526}",
|
|
18729
|
+
integration_partner: "\u{1F5FF}",
|
|
18730
|
+
integration_pattern: "\u{1F517}",
|
|
18731
|
+
interaction_spec: "\u{1F5B1}\uFE0F",
|
|
18732
|
+
interview_guide: "\u{1F4CB}",
|
|
18733
|
+
investigation: "\u{1F50D}",
|
|
18734
|
+
invoice: "\u{1F4B3}",
|
|
18735
|
+
ip_asset: "\xA9\uFE0F",
|
|
18736
|
+
job: "\u{1F528}",
|
|
18737
|
+
job_step: "\u{1F463}",
|
|
18738
|
+
journey_action: "\u26A1",
|
|
18739
|
+
journey_phase: "\u{1F516}",
|
|
18740
|
+
journey_step: "\u{1FA9C}",
|
|
18741
|
+
key_activity: "\u{1F6E0}\uFE0F",
|
|
18742
|
+
key_resource: "\u{1F3ED}",
|
|
18743
|
+
key_result: "\u{1F4C8}",
|
|
18744
|
+
knowledge_base_article: "\u{1F4D3}",
|
|
18745
|
+
launch: "\u{1F6F8}",
|
|
18746
|
+
lead: "\u{1F33F}",
|
|
18747
|
+
learning: "\u{1F9E0}",
|
|
18748
|
+
learning_path: "\u{1F97E}",
|
|
18749
|
+
legal_entity: "\u{1F3E2}",
|
|
18750
|
+
library_dependency: "\u{1F4DA}",
|
|
18751
|
+
locale: "\u{1F30E}",
|
|
18752
|
+
locale_config: "\u{1F5FE}",
|
|
18753
|
+
market_segment: "\u{1F3AF}",
|
|
18754
|
+
market_trend: "\u{1F4C9}",
|
|
18755
|
+
marketing_campaign_plan: "\u{1F4C6}",
|
|
18756
|
+
marketing_channel: "\u{1F4FB}",
|
|
18757
|
+
marketing_strategy: "\u{1F531}",
|
|
18758
|
+
marketplace_listing: "\u{1F6D2}",
|
|
18759
|
+
messaging: "\u2709\uFE0F",
|
|
18760
|
+
metric: "\u{1F522}",
|
|
18761
|
+
metric_quality_assessment: "\u{1FA7A}",
|
|
18762
|
+
milestone: "\u26F3",
|
|
18763
|
+
mission: "\u{1F9ED}",
|
|
18764
|
+
model_comparison: "\u{1F504}",
|
|
18765
|
+
monitor: "\u{1F4FA}",
|
|
18766
|
+
need: "\u{1FAC0}",
|
|
18767
|
+
nps_campaign: "\u{1F60A}",
|
|
18768
|
+
objection: "\u{1F6A7}",
|
|
18769
|
+
objective: "\u{1F3C1}",
|
|
18770
|
+
observation: "\u{1F441}\uFE0F",
|
|
18771
|
+
on_call_rotation: "\u{1F3D5}\uFE0F",
|
|
18772
|
+
opportunity: "\u{1F6AA}",
|
|
18773
|
+
organization: "\u{1F3D9}\uFE0F",
|
|
18774
|
+
outcome: "\u{1F3C6}",
|
|
18775
|
+
participant: "\u{1F64B}",
|
|
18776
|
+
partner_program: "\u{1F397}\uFE0F",
|
|
18777
|
+
partner_revenue_share: "\u{1F932}",
|
|
18778
|
+
partner_tier: "\u{1F948}",
|
|
18779
|
+
partnership: "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}",
|
|
18780
|
+
paywall: "\u{1F6C2}",
|
|
18781
|
+
penetration_test: "\u{1F5E1}\uFE0F",
|
|
18782
|
+
person: "\u{1F9D1}",
|
|
18783
|
+
persona: "\u{1F3AD}",
|
|
18784
|
+
pipeline_sales: "\u{1FA88}",
|
|
18785
|
+
pipeline_stage: "\u{1F9FD}",
|
|
18786
|
+
playbook: "\u{1F4D2}",
|
|
18787
|
+
portfolio: "\u{1F9F8}",
|
|
18788
|
+
positioning: "\u{1F3AA}",
|
|
18789
|
+
postmortem: "\u{1FA7B}",
|
|
18790
|
+
press_release: "\u{1F5DE}\uFE0F",
|
|
18791
|
+
pricing_strategy: "\u{1F4B1}",
|
|
18792
|
+
pricing_tier: "\u{1F949}",
|
|
18793
|
+
primitive: "\u{1F4CB}",
|
|
18794
|
+
privacy_policy: "\u{1F6E1}\uFE0F",
|
|
18795
|
+
product: "\u{1F9EC}",
|
|
18796
|
+
product_area: "\u{1FA80}",
|
|
18797
|
+
program: "\u{1F6CB}\uFE0F",
|
|
18798
|
+
project: "\u{1F9F3}",
|
|
18799
|
+
prompt_template: "\u2712\uFE0F",
|
|
18800
|
+
prompt_version: "\u{1F5E8}\uFE0F",
|
|
18801
|
+
proof_point: "\u{1F9FE}",
|
|
18802
|
+
prototype: "\u{1F4F1}",
|
|
18803
|
+
qa_session: "\u{1F41E}",
|
|
18804
|
+
queue_topic: "\u{1F4EC}",
|
|
18805
|
+
quote: "\u{1F5E3}\uFE0F",
|
|
18806
|
+
quote_document: "\u{1F4B2}",
|
|
18807
|
+
read_model: "\u{1FA9F}",
|
|
18808
|
+
rebuttal: "\u21A9\uFE0F",
|
|
18809
|
+
regional_pricing: "\u{1F4B4}",
|
|
18810
|
+
regression_test: "\u267B\uFE0F",
|
|
18811
|
+
release: "\u{1F6A2}",
|
|
18812
|
+
release_strategy: "\u{1FA82}",
|
|
18813
|
+
report: "\u{1F4F0}",
|
|
18814
|
+
research_plan: "\u{1F5FA}\uFE0F",
|
|
18815
|
+
research_question: "\u2753",
|
|
18816
|
+
research_study: "\u{1F9D1}\u200D\u{1F52C}",
|
|
18817
|
+
resource_allocation: "\u{1F967}",
|
|
18818
|
+
retrospective: "\u{1FA9E}",
|
|
18819
|
+
revenue_stream: "\u{1F4B5}",
|
|
18820
|
+
review_gate: "\u{1F6A5}",
|
|
18821
|
+
risk: "\u{1F3B2}",
|
|
18822
|
+
risk_register: "\u{1F9EF}",
|
|
18823
|
+
roadmap: "\u{1F6E3}\uFE0F",
|
|
18824
|
+
roadmap_item: "\u{1F6A9}",
|
|
18825
|
+
roadmap_theme: "\u{1F3A8}",
|
|
18826
|
+
role: "\u{1FAAA}",
|
|
18827
|
+
root_cause: "\u{1FA9D}",
|
|
18828
|
+
runbook: "\u{1F4D8}",
|
|
18829
|
+
sales_motion: "\u{1F501}",
|
|
18830
|
+
screen: "\u{1F5A5}\uFE0F",
|
|
18831
|
+
screen_state: "\u{1F533}",
|
|
18832
|
+
security_audit: "\u{1F6C3}",
|
|
18833
|
+
security_control: "\u{1F39A}\uFE0F",
|
|
18834
|
+
security_policy: "\u{1F510}",
|
|
18835
|
+
security_review: "\u{1F9D0}",
|
|
18836
|
+
seo_keyword: "#\uFE0F\u20E3",
|
|
18837
|
+
service: "\u2699\uFE0F",
|
|
18838
|
+
service_blueprint: "\u{1F7E3}",
|
|
18839
|
+
service_level_agreement: "\u23F1\uFE0F",
|
|
18840
|
+
service_level_indicator: "\u{1F321}\uFE0F",
|
|
18841
|
+
service_level_objective: "\u{1F945}",
|
|
18842
|
+
skill: "\u{1F393}",
|
|
18843
|
+
social_post: "\u{1F426}",
|
|
18844
|
+
solution: "\u{1F527}",
|
|
18845
|
+
specification: "\u{1F4CB}",
|
|
18846
|
+
stakeholder: "\u{1F9D1}\u200D\u{1F4BC}",
|
|
18847
|
+
status_report: "\u{1F4C4}",
|
|
18848
|
+
strategic_pillar: "\u{1F3DB}\uFE0F",
|
|
18849
|
+
strategic_theme: "\u{1F9F5}",
|
|
18850
|
+
subscription: "\u{1F502}",
|
|
18851
|
+
success_milestone: "\u{1F389}",
|
|
18852
|
+
support_ticket: "\u{1F198}",
|
|
18853
|
+
survey_response: "\u{1F4E8}",
|
|
18854
|
+
switching_cost: "\u2693",
|
|
18855
|
+
symptom: "\u26A0\uFE0F",
|
|
18856
|
+
task: "\u2611\uFE0F",
|
|
18857
|
+
team: "\u{1FAC2}",
|
|
18858
|
+
team_okr: "\u{1F3C5}",
|
|
18859
|
+
technical_debt_item: "\u{1FAA4}",
|
|
18860
|
+
territory: "\u{1F3F4}",
|
|
18861
|
+
test_case: "\u{1F335}",
|
|
18862
|
+
test_coverage_report: "\u{1F38F}",
|
|
18863
|
+
test_environment: "\u2697\uFE0F",
|
|
18864
|
+
test_plan: "\u{1F4DD}",
|
|
18865
|
+
test_result: "\u{1F3B0}",
|
|
18866
|
+
test_suite: "\u{1F4C2}",
|
|
18867
|
+
threat: "\u2620\uFE0F",
|
|
18868
|
+
threat_model: "\u{1F3F4}\u200D\u2620\uFE0F",
|
|
18869
|
+
touchpoint: "\u{1F446}",
|
|
18870
|
+
translation_bundle: "\u{1F202}\uFE0F",
|
|
18871
|
+
translation_key: "\u{1F5DD}\uFE0F",
|
|
18872
|
+
trial_config: "\u{1F193}",
|
|
18873
|
+
tutorial: "\u{1F9D1}\u200D\u{1F3EB}",
|
|
18874
|
+
unit_economics: "\u{1F4B9}",
|
|
18875
|
+
user_advisory_board: "\u{1FAF5}",
|
|
18876
|
+
user_flow: "\u{1F500}",
|
|
18877
|
+
user_journey: "\u{1F6E4}\uFE0F",
|
|
18878
|
+
user_story: "\u{1F4AC}",
|
|
18879
|
+
value_object: "\u{1F48E}",
|
|
18880
|
+
value_proposition: "\u2728",
|
|
18881
|
+
value_stream: "\u{1F30A}",
|
|
18882
|
+
variant: "\u{1F18E}",
|
|
18883
|
+
vision: "\u{1F52D}",
|
|
18884
|
+
vulnerability: "\u{1F513}",
|
|
18885
|
+
walkthrough: "\u{1F6B6}",
|
|
18886
|
+
webinar: "\u{1F3A5}",
|
|
18887
|
+
wireframe: "\u25AD",
|
|
18888
|
+
workflow_artifact: "\u{1F5F3}\uFE0F",
|
|
18889
|
+
workflow_run: "\u23EF\uFE0F",
|
|
18890
|
+
workflow_template: "\u{1F3BB}",
|
|
18891
|
+
workspace: "\u{1F3E0}"
|
|
18892
|
+
};
|
|
18893
|
+
|
|
18236
18894
|
// src/presentation/labels.ts
|
|
18237
18895
|
var PRIORITY_LABELS = [
|
|
18238
18896
|
// ── need (CONSOLIDATED: replaces pain_point + user_need) ─────────────────────
|
|
@@ -19146,6 +19804,7 @@ var UPG_TYPE_LABELS = UPG_ACTIVE_TYPES.map((typeName) => {
|
|
|
19146
19804
|
};
|
|
19147
19805
|
return {
|
|
19148
19806
|
...priority,
|
|
19807
|
+
emoji: ENTITY_EMOJI[typeName] ?? DEFAULT_ENTITY_EMOJI,
|
|
19149
19808
|
alt_labels: [...priority.alt_labels, ...newAliases, ...slotAliases2],
|
|
19150
19809
|
framework_labels: mergedFrameworkLabels
|
|
19151
19810
|
};
|
|
@@ -19158,6 +19817,7 @@ var UPG_TYPE_LABELS = UPG_ACTIVE_TYPES.map((typeName) => {
|
|
|
19158
19817
|
return {
|
|
19159
19818
|
id: typeName,
|
|
19160
19819
|
canonical_label: toTitleCase(typeName),
|
|
19820
|
+
emoji: ENTITY_EMOJI[typeName] ?? DEFAULT_ENTITY_EMOJI,
|
|
19161
19821
|
alt_labels: [...standard.alt_labels, ...newAliases, ...slotAliases2],
|
|
19162
19822
|
framework_labels: generated?.framework_labels ?? {}
|
|
19163
19823
|
};
|
|
@@ -19166,6 +19826,7 @@ var UPG_TYPE_LABELS = UPG_ACTIVE_TYPES.map((typeName) => {
|
|
|
19166
19826
|
return {
|
|
19167
19827
|
id: typeName,
|
|
19168
19828
|
canonical_label: toTitleCase(typeName),
|
|
19829
|
+
emoji: ENTITY_EMOJI[typeName] ?? DEFAULT_ENTITY_EMOJI,
|
|
19169
19830
|
alt_labels: [...migrationAliases, ...slotAliases],
|
|
19170
19831
|
framework_labels: generated?.framework_labels ?? {}
|
|
19171
19832
|
};
|
|
@@ -19204,6 +19865,110 @@ function buildTypeAliases() {
|
|
|
19204
19865
|
}
|
|
19205
19866
|
var UPG_TYPE_ALIASES = buildTypeAliases();
|
|
19206
19867
|
|
|
19868
|
+
// src/presentation/tree-patterns.ts
|
|
19869
|
+
var UPG_TREE_PATTERNS = [
|
|
19870
|
+
{
|
|
19871
|
+
id: "ost",
|
|
19872
|
+
label: "Opportunity Solution Tree",
|
|
19873
|
+
description: "A desired outcome branching into the opportunities under it and the solutions that address them (Teresa Torres).",
|
|
19874
|
+
framework_id: "opportunity-solution-tree",
|
|
19875
|
+
anchor_type: "outcome",
|
|
19876
|
+
fallback_anchors: ["desired_outcome", "opportunity"],
|
|
19877
|
+
child_map: {
|
|
19878
|
+
outcome: ["opportunity"],
|
|
19879
|
+
desired_outcome: ["opportunity"],
|
|
19880
|
+
opportunity: ["solution"]
|
|
19881
|
+
},
|
|
19882
|
+
natural_depth: 3
|
|
19883
|
+
},
|
|
19884
|
+
{
|
|
19885
|
+
id: "okr",
|
|
19886
|
+
label: "Objectives and Key Results",
|
|
19887
|
+
description: "Strategic themes containing objectives, each measured by its key results (John Doerr).",
|
|
19888
|
+
framework_id: "okr-framework",
|
|
19889
|
+
anchor_type: "strategic_theme",
|
|
19890
|
+
fallback_anchors: ["objective"],
|
|
19891
|
+
child_map: {
|
|
19892
|
+
strategic_theme: ["objective"],
|
|
19893
|
+
objective: ["key_result"]
|
|
19894
|
+
},
|
|
19895
|
+
natural_depth: 3
|
|
19896
|
+
},
|
|
19897
|
+
{
|
|
19898
|
+
id: "user",
|
|
19899
|
+
label: "User chain",
|
|
19900
|
+
description: "A persona and the jobs it pursues, branching into the needs and desired outcomes behind them.",
|
|
19901
|
+
anchor_type: "persona",
|
|
19902
|
+
fallback_anchors: ["job"],
|
|
19903
|
+
child_map: {
|
|
19904
|
+
persona: ["job", "need", "desired_outcome"],
|
|
19905
|
+
job: ["need", "desired_outcome"]
|
|
19906
|
+
},
|
|
19907
|
+
natural_depth: 3
|
|
19908
|
+
},
|
|
19909
|
+
{
|
|
19910
|
+
id: "product",
|
|
19911
|
+
label: "Product breakdown",
|
|
19912
|
+
description: "The product organised into feature areas, then features, epics, and user stories.",
|
|
19913
|
+
anchor_type: "product",
|
|
19914
|
+
fallback_anchors: ["feature_area", "feature"],
|
|
19915
|
+
child_map: {
|
|
19916
|
+
product: ["feature_area"],
|
|
19917
|
+
feature_area: ["feature"],
|
|
19918
|
+
feature: ["epic"],
|
|
19919
|
+
epic: ["user_story"]
|
|
19920
|
+
},
|
|
19921
|
+
natural_depth: 5
|
|
19922
|
+
},
|
|
19923
|
+
{
|
|
19924
|
+
id: "validation",
|
|
19925
|
+
label: "Validation chain",
|
|
19926
|
+
description: "A hypothesis through its experiment plan, experiment, run, and the learning it produced.",
|
|
19927
|
+
framework_id: "build-measure-learn",
|
|
19928
|
+
anchor_type: "hypothesis",
|
|
19929
|
+
fallback_anchors: ["experiment_plan", "experiment"],
|
|
19930
|
+
child_map: {
|
|
19931
|
+
hypothesis: ["experiment_plan"],
|
|
19932
|
+
experiment_plan: ["experiment"],
|
|
19933
|
+
experiment: ["experiment_run"],
|
|
19934
|
+
experiment_run: ["learning"]
|
|
19935
|
+
},
|
|
19936
|
+
natural_depth: 5
|
|
19937
|
+
},
|
|
19938
|
+
{
|
|
19939
|
+
id: "strategy",
|
|
19940
|
+
label: "Strategy cascade",
|
|
19941
|
+
description: "Vision and mission into the strategic themes (bets), the initiatives that pursue them, and the outcomes they drive. Themes anchor on vision OR the product, whichever the graph wired.",
|
|
19942
|
+
anchor_type: "vision",
|
|
19943
|
+
fallback_anchors: ["product", "strategic_theme"],
|
|
19944
|
+
child_map: {
|
|
19945
|
+
vision: ["mission", "strategic_theme"],
|
|
19946
|
+
product: ["strategic_theme"],
|
|
19947
|
+
mission: ["strategic_theme"],
|
|
19948
|
+
strategic_theme: ["initiative"],
|
|
19949
|
+
initiative: ["outcome"]
|
|
19950
|
+
},
|
|
19951
|
+
natural_depth: 4
|
|
19952
|
+
},
|
|
19953
|
+
{
|
|
19954
|
+
id: "feature_areas",
|
|
19955
|
+
label: "Feature areas",
|
|
19956
|
+
description: "Feature areas and the features they contain.",
|
|
19957
|
+
anchor_type: "feature_area",
|
|
19958
|
+
fallback_anchors: ["feature"],
|
|
19959
|
+
child_map: {
|
|
19960
|
+
feature_area: ["feature"]
|
|
19961
|
+
},
|
|
19962
|
+
natural_depth: 2
|
|
19963
|
+
}
|
|
19964
|
+
];
|
|
19965
|
+
var UPG_TREE_PATTERNS_BY_ID = Object.fromEntries(
|
|
19966
|
+
UPG_TREE_PATTERNS.map((p) => [p.id, p])
|
|
19967
|
+
);
|
|
19968
|
+
function getTreePattern(id) {
|
|
19969
|
+
return UPG_TREE_PATTERNS_BY_ID[id];
|
|
19970
|
+
}
|
|
19971
|
+
|
|
19207
19972
|
// src/playbooks/definitions/index.ts
|
|
19208
19973
|
function seqStep(order, phase, entity_types, prompt_hint, options) {
|
|
19209
19974
|
return {
|
|
@@ -27477,7 +28242,7 @@ function isCanonical(text) {
|
|
|
27477
28242
|
}
|
|
27478
28243
|
|
|
27479
28244
|
// src/index.ts
|
|
27480
|
-
var UPG_VERSION = "0.9.
|
|
28245
|
+
var UPG_VERSION = "0.9.15";
|
|
27481
28246
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
27482
28247
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
27483
28248
|
var UPG_TYPES = getTypes();
|
|
@@ -27547,8 +28312,10 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
27547
28312
|
BUSINESS_GTM_GROWTH_PLAYBOOK,
|
|
27548
28313
|
BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK,
|
|
27549
28314
|
CONTENT_DEPTH_WARNING_RULES,
|
|
28315
|
+
DEFAULT_ENTITY_EMOJI,
|
|
27550
28316
|
DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
|
|
27551
28317
|
ENGINEERING_PLATFORM_PLAYBOOK,
|
|
28318
|
+
ENTITY_EMOJI,
|
|
27552
28319
|
EXPERIENCE_DESIGN_BRAND_PLAYBOOK,
|
|
27553
28320
|
FOUNDATIONS_PLAYBOOK,
|
|
27554
28321
|
LEGACY_PRODUCT_STAGES,
|
|
@@ -27611,6 +28378,8 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
27611
28378
|
UPG_SPLIT_MIGRATIONS,
|
|
27612
28379
|
UPG_STATUS_MIGRATIONS,
|
|
27613
28380
|
UPG_STRUCTURE_PATTERNS,
|
|
28381
|
+
UPG_TREE_PATTERNS,
|
|
28382
|
+
UPG_TREE_PATTERNS_BY_ID,
|
|
27614
28383
|
UPG_TYPES,
|
|
27615
28384
|
UPG_TYPES_SET,
|
|
27616
28385
|
UPG_TYPE_ALIASES,
|
|
@@ -27669,6 +28438,7 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
27669
28438
|
getRingForDomain,
|
|
27670
28439
|
getScale,
|
|
27671
28440
|
getSplitMigrations,
|
|
28441
|
+
getTreePattern,
|
|
27672
28442
|
getTypeId,
|
|
27673
28443
|
getTypeName,
|
|
27674
28444
|
getTypes,
|