@unified-product-graph/core 0.9.6 → 0.9.8
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 +40 -0
- package/dist/index.cjs +819 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +255 -3
- package/dist/index.d.ts +255 -3
- package/dist/index.js +819 -74
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -6831,6 +6831,202 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
6831
6831
|
source_type: string;
|
|
6832
6832
|
target_type: string;
|
|
6833
6833
|
};
|
|
6834
|
+
data_classification_governed_by_privacy_policy: {
|
|
6835
|
+
forward_verb: string;
|
|
6836
|
+
reverse_verb: string;
|
|
6837
|
+
classification: "cross-domain";
|
|
6838
|
+
source_type: string;
|
|
6839
|
+
target_type: string;
|
|
6840
|
+
};
|
|
6841
|
+
design_component_conforms_to_a11y_standard: {
|
|
6842
|
+
forward_verb: string;
|
|
6843
|
+
reverse_verb: string;
|
|
6844
|
+
classification: "cross-domain";
|
|
6845
|
+
source_type: string;
|
|
6846
|
+
target_type: string;
|
|
6847
|
+
};
|
|
6848
|
+
design_component_conforms_to_a11y_guideline: {
|
|
6849
|
+
forward_verb: string;
|
|
6850
|
+
reverse_verb: string;
|
|
6851
|
+
classification: "cross-domain";
|
|
6852
|
+
source_type: string;
|
|
6853
|
+
target_type: string;
|
|
6854
|
+
};
|
|
6855
|
+
feature_request_becomes_feature: {
|
|
6856
|
+
forward_verb: string;
|
|
6857
|
+
reverse_verb: string;
|
|
6858
|
+
classification: "cross-domain";
|
|
6859
|
+
source_type: string;
|
|
6860
|
+
target_type: string;
|
|
6861
|
+
};
|
|
6862
|
+
objective_advances_outcome: {
|
|
6863
|
+
forward_verb: string;
|
|
6864
|
+
reverse_verb: string;
|
|
6865
|
+
classification: "causal";
|
|
6866
|
+
source_type: string;
|
|
6867
|
+
target_type: string;
|
|
6868
|
+
};
|
|
6869
|
+
desired_outcome_reveals_opportunity: {
|
|
6870
|
+
forward_verb: string;
|
|
6871
|
+
reverse_verb: string;
|
|
6872
|
+
classification: "cross-domain";
|
|
6873
|
+
source_type: string;
|
|
6874
|
+
target_type: string;
|
|
6875
|
+
};
|
|
6876
|
+
desired_outcome_quantified_by_metric: {
|
|
6877
|
+
forward_verb: string;
|
|
6878
|
+
reverse_verb: string;
|
|
6879
|
+
classification: "cross-domain";
|
|
6880
|
+
source_type: string;
|
|
6881
|
+
target_type: string;
|
|
6882
|
+
};
|
|
6883
|
+
feasibility_study_informs_decision: {
|
|
6884
|
+
forward_verb: string;
|
|
6885
|
+
reverse_verb: string;
|
|
6886
|
+
classification: "cross-domain";
|
|
6887
|
+
source_type: string;
|
|
6888
|
+
target_type: string;
|
|
6889
|
+
};
|
|
6890
|
+
feasibility_study_recommends_solution: {
|
|
6891
|
+
forward_verb: string;
|
|
6892
|
+
reverse_verb: string;
|
|
6893
|
+
classification: "semantic";
|
|
6894
|
+
source_type: string;
|
|
6895
|
+
target_type: string;
|
|
6896
|
+
};
|
|
6897
|
+
feasibility_study_produces_learning: {
|
|
6898
|
+
forward_verb: string;
|
|
6899
|
+
reverse_verb: string;
|
|
6900
|
+
classification: "cross-domain";
|
|
6901
|
+
source_type: string;
|
|
6902
|
+
target_type: string;
|
|
6903
|
+
};
|
|
6904
|
+
design_sprint_informs_decision: {
|
|
6905
|
+
forward_verb: string;
|
|
6906
|
+
reverse_verb: string;
|
|
6907
|
+
classification: "cross-domain";
|
|
6908
|
+
source_type: string;
|
|
6909
|
+
target_type: string;
|
|
6910
|
+
};
|
|
6911
|
+
design_sprint_recommends_solution: {
|
|
6912
|
+
forward_verb: string;
|
|
6913
|
+
reverse_verb: string;
|
|
6914
|
+
classification: "semantic";
|
|
6915
|
+
source_type: string;
|
|
6916
|
+
target_type: string;
|
|
6917
|
+
};
|
|
6918
|
+
design_sprint_produces_learning: {
|
|
6919
|
+
forward_verb: string;
|
|
6920
|
+
reverse_verb: string;
|
|
6921
|
+
classification: "cross-domain";
|
|
6922
|
+
source_type: string;
|
|
6923
|
+
target_type: string;
|
|
6924
|
+
};
|
|
6925
|
+
affinity_cluster_groups_observation: {
|
|
6926
|
+
forward_verb: string;
|
|
6927
|
+
reverse_verb: string;
|
|
6928
|
+
classification: "hierarchy";
|
|
6929
|
+
source_type: string;
|
|
6930
|
+
target_type: string;
|
|
6931
|
+
};
|
|
6932
|
+
feedback_theme_reveals_opportunity: {
|
|
6933
|
+
forward_verb: string;
|
|
6934
|
+
reverse_verb: string;
|
|
6935
|
+
classification: "cross-domain";
|
|
6936
|
+
source_type: string;
|
|
6937
|
+
target_type: string;
|
|
6938
|
+
};
|
|
6939
|
+
competitor_feature_benchmarks_capability: {
|
|
6940
|
+
forward_verb: string;
|
|
6941
|
+
reverse_verb: string;
|
|
6942
|
+
classification: "cross-domain";
|
|
6943
|
+
source_type: string;
|
|
6944
|
+
target_type: string;
|
|
6945
|
+
};
|
|
6946
|
+
switching_cost_locks_in_competitor: {
|
|
6947
|
+
forward_verb: string;
|
|
6948
|
+
reverse_verb: string;
|
|
6949
|
+
classification: "cross-domain";
|
|
6950
|
+
source_type: string;
|
|
6951
|
+
target_type: string;
|
|
6952
|
+
};
|
|
6953
|
+
test_result_reports_bug: {
|
|
6954
|
+
forward_verb: string;
|
|
6955
|
+
reverse_verb: string;
|
|
6956
|
+
classification: "cross-domain";
|
|
6957
|
+
source_type: string;
|
|
6958
|
+
target_type: string;
|
|
6959
|
+
};
|
|
6960
|
+
content_piece_repurposed_as_social_post: {
|
|
6961
|
+
forward_verb: string;
|
|
6962
|
+
reverse_verb: string;
|
|
6963
|
+
classification: "cross-domain";
|
|
6964
|
+
source_type: string;
|
|
6965
|
+
target_type: string;
|
|
6966
|
+
};
|
|
6967
|
+
translation_key_localises_content_piece: {
|
|
6968
|
+
forward_verb: string;
|
|
6969
|
+
reverse_verb: string;
|
|
6970
|
+
classification: "cross-domain";
|
|
6971
|
+
source_type: string;
|
|
6972
|
+
target_type: string;
|
|
6973
|
+
};
|
|
6974
|
+
translation_key_targets_locale: {
|
|
6975
|
+
forward_verb: string;
|
|
6976
|
+
reverse_verb: string;
|
|
6977
|
+
classification: "semantic";
|
|
6978
|
+
source_type: string;
|
|
6979
|
+
target_type: string;
|
|
6980
|
+
};
|
|
6981
|
+
partner_revenue_share_feeds_revenue_stream: {
|
|
6982
|
+
forward_verb: string;
|
|
6983
|
+
reverse_verb: string;
|
|
6984
|
+
classification: "cross-domain";
|
|
6985
|
+
source_type: string;
|
|
6986
|
+
target_type: string;
|
|
6987
|
+
};
|
|
6988
|
+
retrospective_produces_learning: {
|
|
6989
|
+
forward_verb: string;
|
|
6990
|
+
reverse_verb: string;
|
|
6991
|
+
classification: "cross-domain";
|
|
6992
|
+
source_type: string;
|
|
6993
|
+
target_type: string;
|
|
6994
|
+
};
|
|
6995
|
+
retrospective_yields_decision: {
|
|
6996
|
+
forward_verb: string;
|
|
6997
|
+
reverse_verb: string;
|
|
6998
|
+
classification: "cross-domain";
|
|
6999
|
+
source_type: string;
|
|
7000
|
+
target_type: string;
|
|
7001
|
+
};
|
|
7002
|
+
status_report_reports_on_milestone: {
|
|
7003
|
+
forward_verb: string;
|
|
7004
|
+
reverse_verb: string;
|
|
7005
|
+
classification: "semantic";
|
|
7006
|
+
source_type: string;
|
|
7007
|
+
target_type: string;
|
|
7008
|
+
};
|
|
7009
|
+
quote_document_advances_deal: {
|
|
7010
|
+
forward_verb: string;
|
|
7011
|
+
reverse_verb: string;
|
|
7012
|
+
classification: "causal";
|
|
7013
|
+
source_type: string;
|
|
7014
|
+
target_type: string;
|
|
7015
|
+
};
|
|
7016
|
+
data_quality_rule_governs_data_source: {
|
|
7017
|
+
forward_verb: string;
|
|
7018
|
+
reverse_verb: string;
|
|
7019
|
+
classification: "semantic";
|
|
7020
|
+
source_type: string;
|
|
7021
|
+
target_type: string;
|
|
7022
|
+
};
|
|
7023
|
+
press_release_announces_launch: {
|
|
7024
|
+
forward_verb: string;
|
|
7025
|
+
reverse_verb: string;
|
|
7026
|
+
classification: "cross-domain";
|
|
7027
|
+
source_type: string;
|
|
7028
|
+
target_type: string;
|
|
7029
|
+
};
|
|
6834
7030
|
};
|
|
6835
7031
|
/** The `UPGEdgeType` union derived from the registry above. Declared here (not
|
|
6836
7032
|
* in `shapes/edges.ts`) so the polymorphic list below can reference it
|
|
@@ -6976,7 +7172,7 @@ interface UPGProduct {
|
|
|
6976
7172
|
/** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
|
|
6977
7173
|
type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
|
|
6978
7174
|
/** The set of valid cross-product relationship types */
|
|
6979
|
-
type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of';
|
|
7175
|
+
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';
|
|
6980
7176
|
/**
|
|
6981
7177
|
* Runtime-checkable list of valid cross-product edge types. Mirrors
|
|
6982
7178
|
* `UPGCrossEdgeType` for use in validators and writers that need to test
|
|
@@ -7011,6 +7207,26 @@ interface UPGCrossEdge {
|
|
|
7011
7207
|
target_product_id?: string;
|
|
7012
7208
|
/** Confidence level if this edge was inferred during import */
|
|
7013
7209
|
mapping_confidence?: UPGMappingConfidence;
|
|
7210
|
+
/**
|
|
7211
|
+
* Sanctioned divergence marker (`instance_of` only). When true, registry drift
|
|
7212
|
+
* detection treats an instance title that differs from its canonical as
|
|
7213
|
+
* intentional (an informative product-local name, e.g. "Vercel Platform / SDK"
|
|
7214
|
+
* vs canonical "Vercel"), excluding it from the `title_divergence` count so
|
|
7215
|
+
* `clean` reflects only un-sanctioned drift.
|
|
7216
|
+
*/
|
|
7217
|
+
alias?: boolean;
|
|
7218
|
+
/**
|
|
7219
|
+
* Audience relevance for `area_serves_persona` / `area_targets_market_segment`:
|
|
7220
|
+
* whether the audience is a primary or secondary focus of this area. The
|
|
7221
|
+
* primary-vs-secondary distinction is the core value of the area-to-audience matrix.
|
|
7222
|
+
*/
|
|
7223
|
+
relevance?: 'primary' | 'secondary';
|
|
7224
|
+
/**
|
|
7225
|
+
* Audience role in this area's context (`area_serves_persona`). Mirrors
|
|
7226
|
+
* `PersonaProperties.audience_role`: the same persona can be a `buyer` for one
|
|
7227
|
+
* area and a `user` for another.
|
|
7228
|
+
*/
|
|
7229
|
+
audience_role?: 'buyer' | 'user' | 'champion' | 'influencer' | 'partner';
|
|
7014
7230
|
}
|
|
7015
7231
|
/**
|
|
7016
7232
|
* A product area within a portfolio. The organisational axis (who owns
|
|
@@ -11023,6 +11239,14 @@ interface WireframeProperties {
|
|
|
11023
11239
|
* }
|
|
11024
11240
|
*/
|
|
11025
11241
|
interface UserFlowProperties {
|
|
11242
|
+
/**
|
|
11243
|
+
* Display order of this flow among sibling flows (0-indexed). The scalar
|
|
11244
|
+
* ordering convention shared with `journey_step.step_order` and
|
|
11245
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). The free-text `steps`
|
|
11246
|
+
* array below still captures the within-flow narrative; this scalar makes the
|
|
11247
|
+
* flow itself a deterministically orderable sibling.
|
|
11248
|
+
*/
|
|
11249
|
+
flow_order?: number;
|
|
11026
11250
|
/** Initiating event */
|
|
11027
11251
|
trigger?: string;
|
|
11028
11252
|
/** Ordered steps */
|
|
@@ -11066,6 +11290,13 @@ interface ScreenProperties {
|
|
|
11066
11290
|
* }
|
|
11067
11291
|
*/
|
|
11068
11292
|
interface ScreenStateProperties {
|
|
11293
|
+
/**
|
|
11294
|
+
* Display order of this state within its parent screen (0-indexed). The scalar
|
|
11295
|
+
* ordering convention shared with `journey_step.step_order` and
|
|
11296
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Orders the states a
|
|
11297
|
+
* screen moves through (e.g. skeleton, loading, populated).
|
|
11298
|
+
*/
|
|
11299
|
+
state_order?: number;
|
|
11069
11300
|
/** State */
|
|
11070
11301
|
state_name: 'empty' | 'loading' | 'error' | 'populated' | 'skeleton' | 'partial';
|
|
11071
11302
|
/** Cause for entering this state */
|
|
@@ -14855,6 +15086,13 @@ interface ProjectProperties {
|
|
|
14855
15086
|
* }
|
|
14856
15087
|
*/
|
|
14857
15088
|
interface MilestoneProperties {
|
|
15089
|
+
/**
|
|
15090
|
+
* Display order of this milestone within its parent project (0-indexed). The
|
|
15091
|
+
* scalar ordering convention shared with `journey_step.step_order` and
|
|
15092
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Orders the delivery
|
|
15093
|
+
* milestones a project moves through, independent of `due_date`.
|
|
15094
|
+
*/
|
|
15095
|
+
milestone_order?: number;
|
|
14858
15096
|
/** Target due date (ISO format) */
|
|
14859
15097
|
due_date?: ISODate;
|
|
14860
15098
|
/** Whether the milestone was met on time */
|
|
@@ -17205,6 +17443,13 @@ interface HelpVideoProperties {
|
|
|
17205
17443
|
* }
|
|
17206
17444
|
*/
|
|
17207
17445
|
interface LearningPathProperties {
|
|
17446
|
+
/**
|
|
17447
|
+
* Display order of this path within a curriculum or program (0-indexed). The
|
|
17448
|
+
* scalar ordering convention shared with `journey_step.step_order` and
|
|
17449
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Makes a learning_path a
|
|
17450
|
+
* deterministically orderable sequence among sibling paths rather than a star.
|
|
17451
|
+
*/
|
|
17452
|
+
path_order?: number;
|
|
17208
17453
|
/** Overall difficulty level of the learning path */
|
|
17209
17454
|
path_difficulty?: DifficultyLevel;
|
|
17210
17455
|
/** Number of items (tutorials, videos, etc.) in the path */
|
|
@@ -17242,6 +17487,13 @@ interface PartnerProgramProperties {
|
|
|
17242
17487
|
* }
|
|
17243
17488
|
*/
|
|
17244
17489
|
interface PartnerTierProperties {
|
|
17490
|
+
/**
|
|
17491
|
+
* Display order of this tier among sibling partner tiers (1 = first tier
|
|
17492
|
+
* shown). Mirrors `pricing_tier.tier_order`; part of the spec-wide `*_order`
|
|
17493
|
+
* sequence convention (UPG-663 / UPG-674). Distinct from `tier_level`, which
|
|
17494
|
+
* is a prestige rank, not a presentation order.
|
|
17495
|
+
*/
|
|
17496
|
+
tier_order?: number;
|
|
17245
17497
|
/** Numeric rank of the tier (higher = more prestigious) */
|
|
17246
17498
|
tier_level?: number;
|
|
17247
17499
|
/** What a partner must achieve to reach this tier */
|
|
@@ -18105,7 +18357,7 @@ type UPGNode<T extends keyof UPGPropertyMap = keyof UPGPropertyMap> = UPGBaseNod
|
|
|
18105
18357
|
* AUTO-GENERATED by scripts/generate-property-registry.ts
|
|
18106
18358
|
* Do not edit manually. Run: npx tsx scripts/generate-property-registry.ts
|
|
18107
18359
|
*
|
|
18108
|
-
* Generated: 2026-06-
|
|
18360
|
+
* Generated: 2026-06-10T00:33:26.360Z
|
|
18109
18361
|
* Entity types with properties: 316
|
|
18110
18362
|
*/
|
|
18111
18363
|
interface PropertyDefinition {
|
|
@@ -20546,7 +20798,7 @@ declare function isCanonical(text: string): boolean;
|
|
|
20546
20798
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
20547
20799
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
20548
20800
|
*/
|
|
20549
|
-
declare const UPG_VERSION: "0.9.
|
|
20801
|
+
declare const UPG_VERSION: "0.9.8";
|
|
20550
20802
|
/**
|
|
20551
20803
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
20552
20804
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|
package/dist/index.d.ts
CHANGED
|
@@ -6831,6 +6831,202 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
6831
6831
|
source_type: string;
|
|
6832
6832
|
target_type: string;
|
|
6833
6833
|
};
|
|
6834
|
+
data_classification_governed_by_privacy_policy: {
|
|
6835
|
+
forward_verb: string;
|
|
6836
|
+
reverse_verb: string;
|
|
6837
|
+
classification: "cross-domain";
|
|
6838
|
+
source_type: string;
|
|
6839
|
+
target_type: string;
|
|
6840
|
+
};
|
|
6841
|
+
design_component_conforms_to_a11y_standard: {
|
|
6842
|
+
forward_verb: string;
|
|
6843
|
+
reverse_verb: string;
|
|
6844
|
+
classification: "cross-domain";
|
|
6845
|
+
source_type: string;
|
|
6846
|
+
target_type: string;
|
|
6847
|
+
};
|
|
6848
|
+
design_component_conforms_to_a11y_guideline: {
|
|
6849
|
+
forward_verb: string;
|
|
6850
|
+
reverse_verb: string;
|
|
6851
|
+
classification: "cross-domain";
|
|
6852
|
+
source_type: string;
|
|
6853
|
+
target_type: string;
|
|
6854
|
+
};
|
|
6855
|
+
feature_request_becomes_feature: {
|
|
6856
|
+
forward_verb: string;
|
|
6857
|
+
reverse_verb: string;
|
|
6858
|
+
classification: "cross-domain";
|
|
6859
|
+
source_type: string;
|
|
6860
|
+
target_type: string;
|
|
6861
|
+
};
|
|
6862
|
+
objective_advances_outcome: {
|
|
6863
|
+
forward_verb: string;
|
|
6864
|
+
reverse_verb: string;
|
|
6865
|
+
classification: "causal";
|
|
6866
|
+
source_type: string;
|
|
6867
|
+
target_type: string;
|
|
6868
|
+
};
|
|
6869
|
+
desired_outcome_reveals_opportunity: {
|
|
6870
|
+
forward_verb: string;
|
|
6871
|
+
reverse_verb: string;
|
|
6872
|
+
classification: "cross-domain";
|
|
6873
|
+
source_type: string;
|
|
6874
|
+
target_type: string;
|
|
6875
|
+
};
|
|
6876
|
+
desired_outcome_quantified_by_metric: {
|
|
6877
|
+
forward_verb: string;
|
|
6878
|
+
reverse_verb: string;
|
|
6879
|
+
classification: "cross-domain";
|
|
6880
|
+
source_type: string;
|
|
6881
|
+
target_type: string;
|
|
6882
|
+
};
|
|
6883
|
+
feasibility_study_informs_decision: {
|
|
6884
|
+
forward_verb: string;
|
|
6885
|
+
reverse_verb: string;
|
|
6886
|
+
classification: "cross-domain";
|
|
6887
|
+
source_type: string;
|
|
6888
|
+
target_type: string;
|
|
6889
|
+
};
|
|
6890
|
+
feasibility_study_recommends_solution: {
|
|
6891
|
+
forward_verb: string;
|
|
6892
|
+
reverse_verb: string;
|
|
6893
|
+
classification: "semantic";
|
|
6894
|
+
source_type: string;
|
|
6895
|
+
target_type: string;
|
|
6896
|
+
};
|
|
6897
|
+
feasibility_study_produces_learning: {
|
|
6898
|
+
forward_verb: string;
|
|
6899
|
+
reverse_verb: string;
|
|
6900
|
+
classification: "cross-domain";
|
|
6901
|
+
source_type: string;
|
|
6902
|
+
target_type: string;
|
|
6903
|
+
};
|
|
6904
|
+
design_sprint_informs_decision: {
|
|
6905
|
+
forward_verb: string;
|
|
6906
|
+
reverse_verb: string;
|
|
6907
|
+
classification: "cross-domain";
|
|
6908
|
+
source_type: string;
|
|
6909
|
+
target_type: string;
|
|
6910
|
+
};
|
|
6911
|
+
design_sprint_recommends_solution: {
|
|
6912
|
+
forward_verb: string;
|
|
6913
|
+
reverse_verb: string;
|
|
6914
|
+
classification: "semantic";
|
|
6915
|
+
source_type: string;
|
|
6916
|
+
target_type: string;
|
|
6917
|
+
};
|
|
6918
|
+
design_sprint_produces_learning: {
|
|
6919
|
+
forward_verb: string;
|
|
6920
|
+
reverse_verb: string;
|
|
6921
|
+
classification: "cross-domain";
|
|
6922
|
+
source_type: string;
|
|
6923
|
+
target_type: string;
|
|
6924
|
+
};
|
|
6925
|
+
affinity_cluster_groups_observation: {
|
|
6926
|
+
forward_verb: string;
|
|
6927
|
+
reverse_verb: string;
|
|
6928
|
+
classification: "hierarchy";
|
|
6929
|
+
source_type: string;
|
|
6930
|
+
target_type: string;
|
|
6931
|
+
};
|
|
6932
|
+
feedback_theme_reveals_opportunity: {
|
|
6933
|
+
forward_verb: string;
|
|
6934
|
+
reverse_verb: string;
|
|
6935
|
+
classification: "cross-domain";
|
|
6936
|
+
source_type: string;
|
|
6937
|
+
target_type: string;
|
|
6938
|
+
};
|
|
6939
|
+
competitor_feature_benchmarks_capability: {
|
|
6940
|
+
forward_verb: string;
|
|
6941
|
+
reverse_verb: string;
|
|
6942
|
+
classification: "cross-domain";
|
|
6943
|
+
source_type: string;
|
|
6944
|
+
target_type: string;
|
|
6945
|
+
};
|
|
6946
|
+
switching_cost_locks_in_competitor: {
|
|
6947
|
+
forward_verb: string;
|
|
6948
|
+
reverse_verb: string;
|
|
6949
|
+
classification: "cross-domain";
|
|
6950
|
+
source_type: string;
|
|
6951
|
+
target_type: string;
|
|
6952
|
+
};
|
|
6953
|
+
test_result_reports_bug: {
|
|
6954
|
+
forward_verb: string;
|
|
6955
|
+
reverse_verb: string;
|
|
6956
|
+
classification: "cross-domain";
|
|
6957
|
+
source_type: string;
|
|
6958
|
+
target_type: string;
|
|
6959
|
+
};
|
|
6960
|
+
content_piece_repurposed_as_social_post: {
|
|
6961
|
+
forward_verb: string;
|
|
6962
|
+
reverse_verb: string;
|
|
6963
|
+
classification: "cross-domain";
|
|
6964
|
+
source_type: string;
|
|
6965
|
+
target_type: string;
|
|
6966
|
+
};
|
|
6967
|
+
translation_key_localises_content_piece: {
|
|
6968
|
+
forward_verb: string;
|
|
6969
|
+
reverse_verb: string;
|
|
6970
|
+
classification: "cross-domain";
|
|
6971
|
+
source_type: string;
|
|
6972
|
+
target_type: string;
|
|
6973
|
+
};
|
|
6974
|
+
translation_key_targets_locale: {
|
|
6975
|
+
forward_verb: string;
|
|
6976
|
+
reverse_verb: string;
|
|
6977
|
+
classification: "semantic";
|
|
6978
|
+
source_type: string;
|
|
6979
|
+
target_type: string;
|
|
6980
|
+
};
|
|
6981
|
+
partner_revenue_share_feeds_revenue_stream: {
|
|
6982
|
+
forward_verb: string;
|
|
6983
|
+
reverse_verb: string;
|
|
6984
|
+
classification: "cross-domain";
|
|
6985
|
+
source_type: string;
|
|
6986
|
+
target_type: string;
|
|
6987
|
+
};
|
|
6988
|
+
retrospective_produces_learning: {
|
|
6989
|
+
forward_verb: string;
|
|
6990
|
+
reverse_verb: string;
|
|
6991
|
+
classification: "cross-domain";
|
|
6992
|
+
source_type: string;
|
|
6993
|
+
target_type: string;
|
|
6994
|
+
};
|
|
6995
|
+
retrospective_yields_decision: {
|
|
6996
|
+
forward_verb: string;
|
|
6997
|
+
reverse_verb: string;
|
|
6998
|
+
classification: "cross-domain";
|
|
6999
|
+
source_type: string;
|
|
7000
|
+
target_type: string;
|
|
7001
|
+
};
|
|
7002
|
+
status_report_reports_on_milestone: {
|
|
7003
|
+
forward_verb: string;
|
|
7004
|
+
reverse_verb: string;
|
|
7005
|
+
classification: "semantic";
|
|
7006
|
+
source_type: string;
|
|
7007
|
+
target_type: string;
|
|
7008
|
+
};
|
|
7009
|
+
quote_document_advances_deal: {
|
|
7010
|
+
forward_verb: string;
|
|
7011
|
+
reverse_verb: string;
|
|
7012
|
+
classification: "causal";
|
|
7013
|
+
source_type: string;
|
|
7014
|
+
target_type: string;
|
|
7015
|
+
};
|
|
7016
|
+
data_quality_rule_governs_data_source: {
|
|
7017
|
+
forward_verb: string;
|
|
7018
|
+
reverse_verb: string;
|
|
7019
|
+
classification: "semantic";
|
|
7020
|
+
source_type: string;
|
|
7021
|
+
target_type: string;
|
|
7022
|
+
};
|
|
7023
|
+
press_release_announces_launch: {
|
|
7024
|
+
forward_verb: string;
|
|
7025
|
+
reverse_verb: string;
|
|
7026
|
+
classification: "cross-domain";
|
|
7027
|
+
source_type: string;
|
|
7028
|
+
target_type: string;
|
|
7029
|
+
};
|
|
6834
7030
|
};
|
|
6835
7031
|
/** The `UPGEdgeType` union derived from the registry above. Declared here (not
|
|
6836
7032
|
* in `shapes/edges.ts`) so the polymorphic list below can reference it
|
|
@@ -6976,7 +7172,7 @@ interface UPGProduct {
|
|
|
6976
7172
|
/** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
|
|
6977
7173
|
type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
|
|
6978
7174
|
/** The set of valid cross-product relationship types */
|
|
6979
|
-
type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of';
|
|
7175
|
+
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';
|
|
6980
7176
|
/**
|
|
6981
7177
|
* Runtime-checkable list of valid cross-product edge types. Mirrors
|
|
6982
7178
|
* `UPGCrossEdgeType` for use in validators and writers that need to test
|
|
@@ -7011,6 +7207,26 @@ interface UPGCrossEdge {
|
|
|
7011
7207
|
target_product_id?: string;
|
|
7012
7208
|
/** Confidence level if this edge was inferred during import */
|
|
7013
7209
|
mapping_confidence?: UPGMappingConfidence;
|
|
7210
|
+
/**
|
|
7211
|
+
* Sanctioned divergence marker (`instance_of` only). When true, registry drift
|
|
7212
|
+
* detection treats an instance title that differs from its canonical as
|
|
7213
|
+
* intentional (an informative product-local name, e.g. "Vercel Platform / SDK"
|
|
7214
|
+
* vs canonical "Vercel"), excluding it from the `title_divergence` count so
|
|
7215
|
+
* `clean` reflects only un-sanctioned drift.
|
|
7216
|
+
*/
|
|
7217
|
+
alias?: boolean;
|
|
7218
|
+
/**
|
|
7219
|
+
* Audience relevance for `area_serves_persona` / `area_targets_market_segment`:
|
|
7220
|
+
* whether the audience is a primary or secondary focus of this area. The
|
|
7221
|
+
* primary-vs-secondary distinction is the core value of the area-to-audience matrix.
|
|
7222
|
+
*/
|
|
7223
|
+
relevance?: 'primary' | 'secondary';
|
|
7224
|
+
/**
|
|
7225
|
+
* Audience role in this area's context (`area_serves_persona`). Mirrors
|
|
7226
|
+
* `PersonaProperties.audience_role`: the same persona can be a `buyer` for one
|
|
7227
|
+
* area and a `user` for another.
|
|
7228
|
+
*/
|
|
7229
|
+
audience_role?: 'buyer' | 'user' | 'champion' | 'influencer' | 'partner';
|
|
7014
7230
|
}
|
|
7015
7231
|
/**
|
|
7016
7232
|
* A product area within a portfolio. The organisational axis (who owns
|
|
@@ -11023,6 +11239,14 @@ interface WireframeProperties {
|
|
|
11023
11239
|
* }
|
|
11024
11240
|
*/
|
|
11025
11241
|
interface UserFlowProperties {
|
|
11242
|
+
/**
|
|
11243
|
+
* Display order of this flow among sibling flows (0-indexed). The scalar
|
|
11244
|
+
* ordering convention shared with `journey_step.step_order` and
|
|
11245
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). The free-text `steps`
|
|
11246
|
+
* array below still captures the within-flow narrative; this scalar makes the
|
|
11247
|
+
* flow itself a deterministically orderable sibling.
|
|
11248
|
+
*/
|
|
11249
|
+
flow_order?: number;
|
|
11026
11250
|
/** Initiating event */
|
|
11027
11251
|
trigger?: string;
|
|
11028
11252
|
/** Ordered steps */
|
|
@@ -11066,6 +11290,13 @@ interface ScreenProperties {
|
|
|
11066
11290
|
* }
|
|
11067
11291
|
*/
|
|
11068
11292
|
interface ScreenStateProperties {
|
|
11293
|
+
/**
|
|
11294
|
+
* Display order of this state within its parent screen (0-indexed). The scalar
|
|
11295
|
+
* ordering convention shared with `journey_step.step_order` and
|
|
11296
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Orders the states a
|
|
11297
|
+
* screen moves through (e.g. skeleton, loading, populated).
|
|
11298
|
+
*/
|
|
11299
|
+
state_order?: number;
|
|
11069
11300
|
/** State */
|
|
11070
11301
|
state_name: 'empty' | 'loading' | 'error' | 'populated' | 'skeleton' | 'partial';
|
|
11071
11302
|
/** Cause for entering this state */
|
|
@@ -14855,6 +15086,13 @@ interface ProjectProperties {
|
|
|
14855
15086
|
* }
|
|
14856
15087
|
*/
|
|
14857
15088
|
interface MilestoneProperties {
|
|
15089
|
+
/**
|
|
15090
|
+
* Display order of this milestone within its parent project (0-indexed). The
|
|
15091
|
+
* scalar ordering convention shared with `journey_step.step_order` and
|
|
15092
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Orders the delivery
|
|
15093
|
+
* milestones a project moves through, independent of `due_date`.
|
|
15094
|
+
*/
|
|
15095
|
+
milestone_order?: number;
|
|
14858
15096
|
/** Target due date (ISO format) */
|
|
14859
15097
|
due_date?: ISODate;
|
|
14860
15098
|
/** Whether the milestone was met on time */
|
|
@@ -17205,6 +17443,13 @@ interface HelpVideoProperties {
|
|
|
17205
17443
|
* }
|
|
17206
17444
|
*/
|
|
17207
17445
|
interface LearningPathProperties {
|
|
17446
|
+
/**
|
|
17447
|
+
* Display order of this path within a curriculum or program (0-indexed). The
|
|
17448
|
+
* scalar ordering convention shared with `journey_step.step_order` and
|
|
17449
|
+
* `journey_action.action_order` (UPG-663 / UPG-674). Makes a learning_path a
|
|
17450
|
+
* deterministically orderable sequence among sibling paths rather than a star.
|
|
17451
|
+
*/
|
|
17452
|
+
path_order?: number;
|
|
17208
17453
|
/** Overall difficulty level of the learning path */
|
|
17209
17454
|
path_difficulty?: DifficultyLevel;
|
|
17210
17455
|
/** Number of items (tutorials, videos, etc.) in the path */
|
|
@@ -17242,6 +17487,13 @@ interface PartnerProgramProperties {
|
|
|
17242
17487
|
* }
|
|
17243
17488
|
*/
|
|
17244
17489
|
interface PartnerTierProperties {
|
|
17490
|
+
/**
|
|
17491
|
+
* Display order of this tier among sibling partner tiers (1 = first tier
|
|
17492
|
+
* shown). Mirrors `pricing_tier.tier_order`; part of the spec-wide `*_order`
|
|
17493
|
+
* sequence convention (UPG-663 / UPG-674). Distinct from `tier_level`, which
|
|
17494
|
+
* is a prestige rank, not a presentation order.
|
|
17495
|
+
*/
|
|
17496
|
+
tier_order?: number;
|
|
17245
17497
|
/** Numeric rank of the tier (higher = more prestigious) */
|
|
17246
17498
|
tier_level?: number;
|
|
17247
17499
|
/** What a partner must achieve to reach this tier */
|
|
@@ -18105,7 +18357,7 @@ type UPGNode<T extends keyof UPGPropertyMap = keyof UPGPropertyMap> = UPGBaseNod
|
|
|
18105
18357
|
* AUTO-GENERATED by scripts/generate-property-registry.ts
|
|
18106
18358
|
* Do not edit manually. Run: npx tsx scripts/generate-property-registry.ts
|
|
18107
18359
|
*
|
|
18108
|
-
* Generated: 2026-06-
|
|
18360
|
+
* Generated: 2026-06-10T00:33:26.360Z
|
|
18109
18361
|
* Entity types with properties: 316
|
|
18110
18362
|
*/
|
|
18111
18363
|
interface PropertyDefinition {
|
|
@@ -20546,7 +20798,7 @@ declare function isCanonical(text: string): boolean;
|
|
|
20546
20798
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
20547
20799
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
20548
20800
|
*/
|
|
20549
|
-
declare const UPG_VERSION: "0.9.
|
|
20801
|
+
declare const UPG_VERSION: "0.9.8";
|
|
20550
20802
|
/**
|
|
20551
20803
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
20552
20804
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|