@unified-product-graph/core 0.8.0 → 0.8.2

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.cjs CHANGED
@@ -21,28 +21,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  ANALYTICS_DATA_PLAYBOOK: () => ANALYTICS_DATA_PLAYBOOK,
24
- BUSINESS_GROWTH_FUNNEL_PLAYBOOK: () => BUSINESS_GROWTH_FUNNEL_PLAYBOOK,
25
24
  BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK: () => BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK,
26
25
  BUSINESS_GTM_GROWTH_PLAYBOOK: () => BUSINESS_GTM_GROWTH_PLAYBOOK,
27
26
  BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK: () => BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK,
28
- BUSINESS_MARKETING_PLAYBOOK: () => BUSINESS_MARKETING_PLAYBOOK,
29
- BUSINESS_MODEL_BMC_PLAYBOOK: () => BUSINESS_MODEL_BMC_PLAYBOOK,
30
- BUSINESS_PRICING_PLAYBOOK: () => BUSINESS_PRICING_PLAYBOOK,
31
27
  DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK: () => DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
32
- DISCOVERY_VALIDATION_HYPOTHESIS_PLAYBOOK: () => DISCOVERY_VALIDATION_HYPOTHESIS_PLAYBOOK,
33
- ENGINEERING_ARCHITECTURE_ONLY_PLAYBOOK: () => ENGINEERING_ARCHITECTURE_ONLY_PLAYBOOK,
34
28
  ENGINEERING_PLATFORM_PLAYBOOK: () => ENGINEERING_PLATFORM_PLAYBOOK,
35
- EXPERIENCE_CONTENT_PLAYBOOK: () => EXPERIENCE_CONTENT_PLAYBOOK,
36
29
  EXPERIENCE_DESIGN_BRAND_PLAYBOOK: () => EXPERIENCE_DESIGN_BRAND_PLAYBOOK,
37
- EXPERIENCE_DESIGN_SYSTEM_PLAYBOOK: () => EXPERIENCE_DESIGN_SYSTEM_PLAYBOOK,
38
- EXPERIENCE_UX_DOMAIN_ONLY_PLAYBOOK: () => EXPERIENCE_UX_DOMAIN_ONLY_PLAYBOOK,
39
30
  LEGACY_PRODUCT_STAGES: () => LEGACY_PRODUCT_STAGES,
40
31
  MARKDOWN_FORMAT_VERSION: () => MARKDOWN_FORMAT_VERSION,
41
32
  MARKET_COMPETITIVE_PLAYBOOK: () => MARKET_COMPETITIVE_PLAYBOOK,
42
33
  OPERATIONS_QUALITY_PLAYBOOK: () => OPERATIONS_QUALITY_PLAYBOOK,
43
- OPERATIONS_TEAM_RITUALS_PLAYBOOK: () => OPERATIONS_TEAM_RITUALS_PLAYBOOK,
44
34
  PRODUCT_DELIVERY_PLAYBOOK: () => PRODUCT_DELIVERY_PLAYBOOK,
45
- PRODUCT_FEEDBACK_SYNTHESIS_PLAYBOOK: () => PRODUCT_FEEDBACK_SYNTHESIS_PLAYBOOK,
46
35
  PROPERTY_SCALE_MAP: () => PROPERTY_SCALE_MAP,
47
36
  REFLECT_MODES: () => REFLECT_MODES,
48
37
  STRATEGY_OUTCOMES_PLAYBOOK: () => STRATEGY_OUTCOMES_PLAYBOOK,
@@ -1147,7 +1136,7 @@ var UPG_EDGE_CATALOG = {
1147
1136
  // product → persona is the most fundamental relationship in the
1148
1137
  // user domain ("who is this product for?") and was the only way to
1149
1138
  // anchor a fresh persona to its product before this edge existed. Without
1150
- // it, the natural agent path through `/upg-persona` produced an orphan
1139
+ // it, the natural agent path through `/upg-new-persona` produced an orphan
1151
1140
  // persona only attached laterally via `ideal_customer_profile_maps_to_persona`
1152
1141
  // or `positioning_resonates_with_persona`. Semantic, not hierarchy: a
1153
1142
  // product doesn't "contain" personas; it targets them.
@@ -2362,6 +2351,13 @@ var UPG_EDGE_CATALOG = {
2362
2351
  // release strategy to the concrete deployments it governs.
2363
2352
  incident_affects_feature: { forward_verb: "affects", reverse_verb: "affected_by", classification: "cross-domain", source_type: "incident", target_type: "feature" },
2364
2353
  release_strategy_used_by_deployment: { forward_verb: "used_by", reverse_verb: "uses", classification: "cross-domain", source_type: "release_strategy", target_type: "deployment" },
2354
+ // v0.8.2 (UPG-615): ITIL/ITSM incident management explicitly links an incident
2355
+ // to the customer-facing support tickets/cases it spawns — when a service
2356
+ // breaks, customers raise tickets; the incident is the cause, the ticket the
2357
+ // effect. Closes the otherwise-unmediated "Customer Support" island in
2358
+ // `playbook:operations-quality`, binding `support_ticket` to the incident/ops
2359
+ // spine. Source: ITIL v4 incident management; DORA/SRE customer-facing impact.
2360
+ incident_generates_support_ticket: { forward_verb: "generates", reverse_verb: "generated_by", classification: "cross-domain", source_type: "incident", target_type: "support_ticket" },
2365
2361
  // Cluster C: User Research linkage matrix.
2366
2362
  // research_study → {participant, research_question, survey_response,
2367
2363
  // interview_guide} containment edges already exist (49/49 in Wave 4).
@@ -12169,6 +12165,9 @@ var UPG_FRAMEWORKS = [
12169
12165
  },
12170
12166
  {
12171
12167
  "id": "value-proposition-canvas",
12168
+ "approach_ids": [
12169
+ "trace"
12170
+ ],
12172
12171
  "name": "Value Proposition Canvas",
12173
12172
  "version": "1.0.0",
12174
12173
  "description": "Map customer jobs, pains, and gains on one side, then align product features, pain relievers, and gain creators on the other to achieve product-market fit.",
@@ -12273,6 +12272,9 @@ var UPG_FRAMEWORKS = [
12273
12272
  },
12274
12273
  {
12275
12274
  "id": "persona-canvas",
12275
+ "approach_ids": [
12276
+ "trace"
12277
+ ],
12276
12278
  "name": "Persona Canvas",
12277
12279
  "version": "1.0.0",
12278
12280
  "description": "Demographics, goals, frustrations, JTBD: a structured template for creating research-backed personas.",
@@ -12385,6 +12387,9 @@ var UPG_FRAMEWORKS = [
12385
12387
  },
12386
12388
  {
12387
12389
  "id": "empathy-map",
12390
+ "approach_ids": [
12391
+ "trace"
12392
+ ],
12388
12393
  "name": "Empathy Map",
12389
12394
  "version": "1.0.0",
12390
12395
  "description": "Visualise what a user says, thinks, does, and feels to build deeper empathy and uncover hidden needs.",
@@ -12545,6 +12550,7 @@ var UPG_FRAMEWORKS = [
12545
12550
  "property": "evolution_stage",
12546
12551
  "type": "enum",
12547
12552
  "required": true,
12553
+ "scope": "framework",
12548
12554
  "label": "Evolution Stage",
12549
12555
  "description": "Where this component sits on the evolution axis",
12550
12556
  "enum_values": [
@@ -12558,6 +12564,7 @@ var UPG_FRAMEWORKS = [
12558
12564
  "property": "visibility",
12559
12565
  "type": "number",
12560
12566
  "required": true,
12567
+ "scope": "framework",
12561
12568
  "label": "Visibility",
12562
12569
  "description": "Y-axis position (0=infrastructure, 1=anchor/user)"
12563
12570
  }
@@ -12567,6 +12574,7 @@ var UPG_FRAMEWORKS = [
12567
12574
  "property": "evolution_stage",
12568
12575
  "type": "enum",
12569
12576
  "required": true,
12577
+ "scope": "framework",
12570
12578
  "label": "Evolution Stage",
12571
12579
  "description": "Where this component sits on the evolution axis",
12572
12580
  "enum_values": [
@@ -12580,6 +12588,7 @@ var UPG_FRAMEWORKS = [
12580
12588
  "property": "visibility",
12581
12589
  "type": "number",
12582
12590
  "required": true,
12591
+ "scope": "framework",
12583
12592
  "label": "Visibility",
12584
12593
  "description": "Y-axis position (0=infrastructure, 1=anchor/user)"
12585
12594
  }
@@ -12589,6 +12598,7 @@ var UPG_FRAMEWORKS = [
12589
12598
  "property": "evolution_stage",
12590
12599
  "type": "enum",
12591
12600
  "required": true,
12601
+ "scope": "framework",
12592
12602
  "label": "Evolution Stage",
12593
12603
  "description": "Where this component sits on the evolution axis",
12594
12604
  "enum_values": [
@@ -12602,6 +12612,7 @@ var UPG_FRAMEWORKS = [
12602
12612
  "property": "visibility",
12603
12613
  "type": "number",
12604
12614
  "required": true,
12615
+ "scope": "framework",
12605
12616
  "label": "Visibility",
12606
12617
  "description": "Y-axis position (0=infrastructure, 1=anchor/user)"
12607
12618
  }
@@ -12611,6 +12622,7 @@ var UPG_FRAMEWORKS = [
12611
12622
  "property": "evolution_stage",
12612
12623
  "type": "enum",
12613
12624
  "required": true,
12625
+ "scope": "framework",
12614
12626
  "label": "Evolution Stage",
12615
12627
  "description": 'Where this component sits on the evolution axis (need anchor is usually at "product" or "commodity")',
12616
12628
  "enum_values": [
@@ -12624,6 +12636,7 @@ var UPG_FRAMEWORKS = [
12624
12636
  "property": "visibility",
12625
12637
  "type": "number",
12626
12638
  "required": true,
12639
+ "scope": "framework",
12627
12640
  "label": "Visibility",
12628
12641
  "description": "Y-axis position (0=infrastructure, 1=anchor/user); needs sit at 1.0"
12629
12642
  }
@@ -12664,6 +12677,9 @@ var UPG_FRAMEWORKS = [
12664
12677
  },
12665
12678
  {
12666
12679
  "id": "business-model-canvas",
12680
+ "approach_ids": [
12681
+ "plan"
12682
+ ],
12667
12683
  "name": "Business Model Canvas",
12668
12684
  "version": "1.0.0",
12669
12685
  "description": "Nine building blocks that describe how an organisation creates, delivers, and captures value.",
@@ -12803,6 +12819,9 @@ var UPG_FRAMEWORKS = [
12803
12819
  },
12804
12820
  {
12805
12821
  "id": "porter-five-forces",
12822
+ "approach_ids": [
12823
+ "inspect"
12824
+ ],
12806
12825
  "name": "Porter Five Forces",
12807
12826
  "version": "1.0.0",
12808
12827
  "description": "Analyse industry competitiveness through five forces: rivalry, new entrants, substitutes, buyer power, and supplier power.",
@@ -12892,6 +12911,9 @@ var UPG_FRAMEWORKS = [
12892
12911
  },
12893
12912
  {
12894
12913
  "id": "swot-analysis",
12914
+ "approach_ids": [
12915
+ "inspect"
12916
+ ],
12895
12917
  "name": "SWOT Analysis",
12896
12918
  "version": "1.0.0",
12897
12919
  "description": "Map Strengths, Weaknesses, Opportunities, and Threats in a 2x2 grid. Internal vs external, helpful vs harmful.",
@@ -13218,6 +13240,7 @@ var UPG_FRAMEWORKS = [
13218
13240
  "type": "assessment",
13219
13241
  "scale_id": "reach_5",
13220
13242
  "required": true,
13243
+ "scope": "framework",
13221
13244
  "label": "Reach",
13222
13245
  "description": "How many users will this impact per quarter?"
13223
13246
  },
@@ -13226,6 +13249,7 @@ var UPG_FRAMEWORKS = [
13226
13249
  "type": "assessment",
13227
13250
  "scale_id": "impact_5",
13228
13251
  "required": true,
13252
+ "scope": "framework",
13229
13253
  "label": "Impact",
13230
13254
  "description": "How much will this impact each user, on the impact scale?"
13231
13255
  },
@@ -13234,6 +13258,7 @@ var UPG_FRAMEWORKS = [
13234
13258
  "type": "assessment",
13235
13259
  "scale_id": "confidence_5",
13236
13260
  "required": true,
13261
+ "scope": "framework",
13237
13262
  "label": "Confidence",
13238
13263
  "description": "How confident are you in the reach, impact, and effort estimates?"
13239
13264
  },
@@ -13242,6 +13267,7 @@ var UPG_FRAMEWORKS = [
13242
13267
  "type": "assessment",
13243
13268
  "scale_id": "effort_5",
13244
13269
  "required": true,
13270
+ "scope": "framework",
13245
13271
  "label": "Effort",
13246
13272
  "description": "How much work is required to build and ship this, on the effort scale?"
13247
13273
  }
@@ -13328,6 +13354,9 @@ var UPG_FRAMEWORKS = [
13328
13354
  },
13329
13355
  {
13330
13356
  "id": "build-measure-learn",
13357
+ "approach_ids": [
13358
+ "reflect"
13359
+ ],
13331
13360
  "name": "Build-Measure-Learn",
13332
13361
  "version": "1.0.0",
13333
13362
  "description": "The core Lean Startup feedback loop: build a minimum viable product, measure its impact with actionable metrics, and learn whether to pivot or persevere.",
@@ -13463,6 +13492,7 @@ var UPG_FRAMEWORKS = [
13463
13492
  "property": "functional_response",
13464
13493
  "type": "enum",
13465
13494
  "required": true,
13495
+ "scope": "framework",
13466
13496
  "label": "Functional Response",
13467
13497
  "description": "How users feel when the feature IS present",
13468
13498
  "enum_values": [
@@ -13477,6 +13507,7 @@ var UPG_FRAMEWORKS = [
13477
13507
  "property": "dysfunctional_response",
13478
13508
  "type": "enum",
13479
13509
  "required": true,
13510
+ "scope": "framework",
13480
13511
  "label": "Dysfunctional Response",
13481
13512
  "description": "How users feel when the feature IS NOT present",
13482
13513
  "enum_values": [
@@ -13491,6 +13522,7 @@ var UPG_FRAMEWORKS = [
13491
13522
  "property": "delighter_count",
13492
13523
  "type": "number",
13493
13524
  "required": false,
13525
+ "scope": "framework",
13494
13526
  "label": "Delighter classifications",
13495
13527
  "description": "Count of survey responses classifying this feature as a delighter (attractive)"
13496
13528
  },
@@ -13498,6 +13530,7 @@ var UPG_FRAMEWORKS = [
13498
13530
  "property": "performance_count",
13499
13531
  "type": "number",
13500
13532
  "required": false,
13533
+ "scope": "framework",
13501
13534
  "label": "Performance classifications",
13502
13535
  "description": "Count of survey responses classifying this feature as performance (one-dimensional)"
13503
13536
  },
@@ -13505,6 +13538,7 @@ var UPG_FRAMEWORKS = [
13505
13538
  "property": "must_be_count",
13506
13539
  "type": "number",
13507
13540
  "required": false,
13541
+ "scope": "framework",
13508
13542
  "label": "Must-be classifications",
13509
13543
  "description": "Count of survey responses classifying this feature as must-be (basic)"
13510
13544
  },
@@ -13512,6 +13546,7 @@ var UPG_FRAMEWORKS = [
13512
13546
  "property": "indifferent_count",
13513
13547
  "type": "number",
13514
13548
  "required": false,
13549
+ "scope": "framework",
13515
13550
  "label": "Indifferent classifications",
13516
13551
  "description": "Count of survey responses classifying this feature as indifferent"
13517
13552
  }
@@ -13704,6 +13739,7 @@ var UPG_FRAMEWORKS = [
13704
13739
  "property": "moscow",
13705
13740
  "type": "enum",
13706
13741
  "required": true,
13742
+ "scope": "framework",
13707
13743
  "label": "MoSCoW priority",
13708
13744
  "description": "Which scope bucket this requirement falls into for the current release",
13709
13745
  "enum_values": [
@@ -13714,16 +13750,7 @@ var UPG_FRAMEWORKS = [
13714
13750
  ]
13715
13751
  }
13716
13752
  ]
13717
- },
13718
- "computed_properties": [
13719
- {
13720
- "property": "must_have_ratio",
13721
- "expression": "must_count / total_count",
13722
- "entity_type": "feature",
13723
- "label": "Must-have Ratio",
13724
- "format": "percentage"
13725
- }
13726
- ]
13753
+ }
13727
13754
  },
13728
13755
  "structure": {
13729
13756
  "pattern": "table"
@@ -13887,6 +13914,9 @@ var UPG_FRAMEWORKS = [
13887
13914
  },
13888
13915
  {
13889
13916
  "id": "c4-model",
13917
+ "approach_ids": [
13918
+ "trace"
13919
+ ],
13890
13920
  "name": "C4 Model",
13891
13921
  "version": "1.0.0",
13892
13922
  "description": "Visualise software architecture at four levels of abstraction: System Context, Container, Component, and Code. Each level zooms in to reveal more detail.",
@@ -13979,6 +14009,9 @@ var UPG_FRAMEWORKS = [
13979
14009
  },
13980
14010
  {
13981
14011
  "id": "adr-log",
14012
+ "approach_ids": [
14013
+ "inspect"
14014
+ ],
13982
14015
  "name": "ADR Log",
13983
14016
  "version": "1.0.0",
13984
14017
  "description": "Architecture Decision Records: log decisions with context, options, and rationale.",
@@ -14092,6 +14125,9 @@ var UPG_FRAMEWORKS = [
14092
14125
  },
14093
14126
  {
14094
14127
  "id": "atomic-design",
14128
+ "approach_ids": [
14129
+ "trace"
14130
+ ],
14095
14131
  "name": "Atomic Design",
14096
14132
  "version": "1.0.0",
14097
14133
  "description": "Atoms, Molecules, Organisms, Templates, Pages: a methodology for creating design systems from the smallest elements up.",
@@ -14189,6 +14225,9 @@ var UPG_FRAMEWORKS = [
14189
14225
  },
14190
14226
  {
14191
14227
  "id": "double-diamond",
14228
+ "approach_ids": [
14229
+ "plan"
14230
+ ],
14192
14231
  "name": "Double Diamond",
14193
14232
  "version": "1.0.0",
14194
14233
  "description": "Discover, Define, Develop, Deliver: a four-phase divergent/convergent design process.",
@@ -14279,6 +14318,9 @@ var UPG_FRAMEWORKS = [
14279
14318
  },
14280
14319
  {
14281
14320
  "id": "dora-metrics",
14321
+ "approach_ids": [
14322
+ "inspect"
14323
+ ],
14282
14324
  "name": "DORA Metrics",
14283
14325
  "version": "1.0.0",
14284
14326
  "description": "Four key metrics for software delivery performance: deployment frequency, lead time, change failure rate, and time to restore.",
@@ -14338,16 +14380,7 @@ var UPG_FRAMEWORKS = [
14338
14380
  ]
14339
14381
  }
14340
14382
  ]
14341
- },
14342
- "computed_properties": [
14343
- {
14344
- "property": "stability_index",
14345
- "expression": "change_failure_rate * mean_time_to_recovery",
14346
- "entity_type": "metric",
14347
- "label": "Stability Index",
14348
- "format": "number"
14349
- }
14350
- ]
14383
+ }
14351
14384
  },
14352
14385
  "structure": {
14353
14386
  "pattern": "collection"
@@ -14476,6 +14509,9 @@ var UPG_FRAMEWORKS = [
14476
14509
  },
14477
14510
  {
14478
14511
  "id": "pirate-metrics-aarrr",
14512
+ "approach_ids": [
14513
+ "trace"
14514
+ ],
14479
14515
  "name": "Pirate Metrics AARRR",
14480
14516
  "version": "1.0.0",
14481
14517
  "description": "Track user lifecycle across five stages: Acquisition, Activation, Retention, Revenue, and Referral.",
@@ -14509,7 +14545,7 @@ var UPG_FRAMEWORKS = [
14509
14545
  "required_properties": {
14510
14546
  "metric": [
14511
14547
  {
14512
- "property": "lifecycle_stage",
14548
+ "property": "metric_category",
14513
14549
  "type": "enum",
14514
14550
  "required": true,
14515
14551
  "label": "Lifecycle stage",
@@ -14523,16 +14559,7 @@ var UPG_FRAMEWORKS = [
14523
14559
  ]
14524
14560
  }
14525
14561
  ]
14526
- },
14527
- "computed_properties": [
14528
- {
14529
- "property": "conversion_rate",
14530
- "expression": "(stage_exits / stage_entries) * 100",
14531
- "entity_type": "metric",
14532
- "label": "Stage Conversion",
14533
- "format": "percentage"
14534
- }
14535
- ]
14562
+ }
14536
14563
  },
14537
14564
  "structure": {
14538
14565
  "pattern": "funnel",
@@ -14596,6 +14623,9 @@ var UPG_FRAMEWORKS = [
14596
14623
  },
14597
14624
  {
14598
14625
  "id": "north-star-metric",
14626
+ "approach_ids": [
14627
+ "plan"
14628
+ ],
14599
14629
  "name": "North Star Metric",
14600
14630
  "version": "1.0.0",
14601
14631
  "description": "One metric that best captures the core value you deliver. Supported by 3-5 input metrics that drive it.",
@@ -14629,7 +14659,7 @@ var UPG_FRAMEWORKS = [
14629
14659
  "required_properties": {
14630
14660
  "metric": [
14631
14661
  {
14632
- "property": "metric_role",
14662
+ "property": "designation",
14633
14663
  "type": "enum",
14634
14664
  "required": true,
14635
14665
  "label": "Metric role",
@@ -14647,16 +14677,7 @@ var UPG_FRAMEWORKS = [
14647
14677
  "description": "How strongly this input metric moves the North Star (input metrics only)"
14648
14678
  }
14649
14679
  ]
14650
- },
14651
- "computed_properties": [
14652
- {
14653
- "property": "nsm_impact",
14654
- "expression": "input_metric_value * leverage",
14655
- "entity_type": "metric",
14656
- "label": "NSM Impact",
14657
- "format": "number"
14658
- }
14659
- ]
14680
+ }
14660
14681
  },
14661
14682
  "structure": {
14662
14683
  "pattern": "collection"
@@ -14692,6 +14713,9 @@ var UPG_FRAMEWORKS = [
14692
14713
  },
14693
14714
  {
14694
14715
  "id": "marketing-mix-4ps",
14716
+ "approach_ids": [
14717
+ "plan"
14718
+ ],
14695
14719
  "name": "Marketing Mix 4Ps",
14696
14720
  "version": "1.0.0",
14697
14721
  "description": "The foundational marketing framework. Every marketing strategy must address four decisions: what to sell (Product), what to charge (Price), where to sell (Place), and how to promote (Promotion).",
@@ -14785,6 +14809,9 @@ var UPG_FRAMEWORKS = [
14785
14809
  },
14786
14810
  {
14787
14811
  "id": "bullseye-framework",
14812
+ "approach_ids": [
14813
+ "plan"
14814
+ ],
14788
14815
  "name": "Bullseye Framework",
14789
14816
  "version": "1.0.0",
14790
14817
  "description": "Test 19 traction channels systematically. Start with the outer ring (what's possible), narrow to the middle ring (what's probable), then focus on the inner ring (what's working). Run cheap tests across all channels to find your bullseye.",
@@ -14871,6 +14898,9 @@ var UPG_FRAMEWORKS = [
14871
14898
  },
14872
14899
  {
14873
14900
  "id": "product-led-growth-framework",
14901
+ "approach_ids": [
14902
+ "plan"
14903
+ ],
14874
14904
  "name": "PLG Framework",
14875
14905
  "version": "1.0.0",
14876
14906
  "description": "Product-led go-to-market motion. Free entry gives users access, the aha moment hooks them, they expand usage within their team, and monetisation captures value from power users.",
@@ -15053,6 +15083,9 @@ var UPG_FRAMEWORKS = [
15053
15083
  },
15054
15084
  {
15055
15085
  "id": "raci-matrix",
15086
+ "approach_ids": [
15087
+ "inspect"
15088
+ ],
15056
15089
  "name": "RACI Matrix",
15057
15090
  "version": "1.0.0",
15058
15091
  "description": "Assign roles: Responsible, Accountable, Consulted, Informed for each activity.",
@@ -15104,16 +15137,7 @@ var UPG_FRAMEWORKS = [
15104
15137
  "role": "item"
15105
15138
  }
15106
15139
  ],
15107
- "required_properties": {},
15108
- "computed_properties": [
15109
- {
15110
- "property": "coverage_score",
15111
- "expression": "assigned_count / total_activities",
15112
- "entity_type": "team",
15113
- "label": "RACI Coverage",
15114
- "format": "percentage"
15115
- }
15116
- ]
15140
+ "required_properties": {}
15117
15141
  },
15118
15142
  "structure": {
15119
15143
  "pattern": "matrix"
@@ -15337,6 +15361,9 @@ var UPG_FRAMEWORKS = [
15337
15361
  },
15338
15362
  {
15339
15363
  "id": "team-health-check",
15364
+ "approach_ids": [
15365
+ "inspect"
15366
+ ],
15340
15367
  "name": "Team Health Check",
15341
15368
  "version": "1.0.0",
15342
15369
  "description": "A facilitated team self-assessment across dimensions like mission, fun, learning, speed, and support, using traffic-light voting to surface strengths and improvement areas in a safe format.",
@@ -15370,209 +15397,1131 @@ var UPG_FRAMEWORKS = [
15370
15397
  "description": "Health dimension scored, e.g. delivering value, teamwork, fun, learning, mission clarity, speed"
15371
15398
  },
15372
15399
  {
15373
- "label": "Team OKR",
15374
- "entityTypeId": "team_okr",
15375
- "description": "Team OKR or improvement goal derived from consistently red health check dimensions"
15400
+ "label": "Team OKR",
15401
+ "entityTypeId": "team_okr",
15402
+ "description": "Team OKR or improvement goal derived from consistently red health check dimensions"
15403
+ }
15404
+ ],
15405
+ "data": {
15406
+ "entity_types": [
15407
+ {
15408
+ "type": "team",
15409
+ "role": "scored_item"
15410
+ },
15411
+ {
15412
+ "type": "retrospective",
15413
+ "role": "item"
15414
+ },
15415
+ {
15416
+ "type": "metric",
15417
+ "role": "item"
15418
+ },
15419
+ {
15420
+ "type": "team_okr",
15421
+ "role": "item"
15422
+ }
15423
+ ],
15424
+ "required_properties": {}
15425
+ },
15426
+ "structure": {
15427
+ "pattern": "table"
15428
+ },
15429
+ "presentation": {
15430
+ "layout": {
15431
+ "type": "table",
15432
+ "columns": [
15433
+ {
15434
+ "property": "title",
15435
+ "label": "Team",
15436
+ "sortable": true
15437
+ },
15438
+ {
15439
+ "property": "title",
15440
+ "label": "Retrospective",
15441
+ "sortable": true
15442
+ },
15443
+ {
15444
+ "property": "description",
15445
+ "label": "Metric"
15446
+ },
15447
+ {
15448
+ "property": "title",
15449
+ "label": "Team OKR",
15450
+ "sortable": true
15451
+ }
15452
+ ]
15453
+ },
15454
+ "sort_by": {
15455
+ "property": "title",
15456
+ "direction": "asc"
15457
+ },
15458
+ "colour_by": "type",
15459
+ "card_fields": [
15460
+ "title",
15461
+ "description",
15462
+ "status"
15463
+ ]
15464
+ },
15465
+ "education": {
15466
+ "purpose": "Regularly assess team health across dimensions (psychological safety, autonomy, mission clarity, fun, speed, learning) to catch problems early and celebrate strengths.",
15467
+ "core_question": "How is the team really doing: where do they feel strong, where do they feel stuck, and what has changed since last check?",
15468
+ "when_to_use": [
15469
+ "You need to improve team collaboration, clarity, or effectiveness",
15470
+ "Roles and responsibilities are unclear or causing friction",
15471
+ "You want to establish or improve team processes and ceremonies"
15472
+ ],
15473
+ "when_not_to_use": [
15474
+ "The team is small and informal coordination works well",
15475
+ "Process overhead would slow down a team that needs speed"
15476
+ ]
15477
+ }
15478
+ },
15479
+ {
15480
+ "id": "raid-log",
15481
+ "approach_ids": [
15482
+ "inspect"
15483
+ ],
15484
+ "name": "RAID Log",
15485
+ "version": "1.0.0",
15486
+ "description": "A project management register tracking Risks, Assumptions, Issues, and Dependencies, the four categories most likely to derail a project if left unmanaged.",
15487
+ "category": "program_mgmt",
15488
+ "origin": {
15489
+ "type": "practitioner",
15490
+ "description": "Standard project management tool used across methodologies. The RAID log (Risks, Assumptions, Issues, Dependencies) provides a single living document for tracking all factors that could derail a programme.",
15491
+ "license": "cc_by"
15492
+ },
15493
+ "tags": [
15494
+ "program_mgmt",
15495
+ "table"
15496
+ ],
15497
+ "slots": [
15498
+ {
15499
+ "label": "Risk Register",
15500
+ "entityTypeId": "risk_register",
15501
+ "description": "Risk or assumption logged with likelihood, impact, owner, and mitigation strategy"
15502
+ },
15503
+ {
15504
+ "label": "Risk",
15505
+ "entityTypeId": "risk",
15506
+ "description": "Individual risk scored by probability and impact; severity = probability * impact"
15507
+ },
15508
+ {
15509
+ "label": "Dependency",
15510
+ "entityTypeId": "dependency",
15511
+ "description": "Dependency on another team, system, or deliverable that could block progress if not resolved"
15512
+ },
15513
+ {
15514
+ "label": "Status Report",
15515
+ "entityTypeId": "status_report",
15516
+ "description": "Status update summarising RAID log changes: new risks, resolved issues, and dependency updates"
15517
+ },
15518
+ {
15519
+ "label": "Deliverable",
15520
+ "entityTypeId": "deliverable",
15521
+ "description": "Deliverable affected by logged risks, issues, or dependencies, linking RAID items to project scope"
15522
+ }
15523
+ ],
15524
+ "data": {
15525
+ "entity_types": [
15526
+ {
15527
+ "type": "risk_register",
15528
+ "role": "item"
15529
+ },
15530
+ {
15531
+ "type": "risk",
15532
+ "role": "scored_item"
15533
+ },
15534
+ {
15535
+ "type": "dependency",
15536
+ "role": "item"
15537
+ },
15538
+ {
15539
+ "type": "status_report",
15540
+ "role": "item"
15541
+ },
15542
+ {
15543
+ "type": "deliverable",
15544
+ "role": "item"
15545
+ }
15546
+ ],
15547
+ "required_properties": {
15548
+ "risk": [
15549
+ {
15550
+ "property": "probability",
15551
+ "type": "number",
15552
+ "required": true,
15553
+ "label": "Probability",
15554
+ "description": "Likelihood the risk materialises (risk.probability assessment)"
15555
+ },
15556
+ {
15557
+ "property": "impact",
15558
+ "type": "number",
15559
+ "required": true,
15560
+ "label": "Impact",
15561
+ "description": "Consequence severity if the risk materialises (risk.impact assessment)"
15562
+ }
15563
+ ]
15564
+ },
15565
+ "computed_properties": [
15566
+ {
15567
+ "property": "severity",
15568
+ "expression": "probability * impact",
15569
+ "entity_type": "risk",
15570
+ "label": "Severity",
15571
+ "format": "number"
15572
+ }
15573
+ ]
15574
+ },
15575
+ "structure": {
15576
+ "pattern": "table"
15577
+ },
15578
+ "presentation": {
15579
+ "layout": {
15580
+ "type": "table",
15581
+ "columns": [
15582
+ {
15583
+ "property": "title",
15584
+ "label": "Item",
15585
+ "sortable": true
15586
+ },
15587
+ {
15588
+ "property": "description",
15589
+ "label": "Category"
15590
+ },
15591
+ {
15592
+ "property": "status",
15593
+ "label": "Status"
15594
+ },
15595
+ {
15596
+ "property": "description",
15597
+ "label": "Owner / Action"
15598
+ }
15599
+ ]
15600
+ },
15601
+ "sort_by": {
15602
+ "property": "title",
15603
+ "direction": "asc"
15604
+ },
15605
+ "colour_by": "type",
15606
+ "card_fields": [
15607
+ "title",
15608
+ "description",
15609
+ "status"
15610
+ ]
15611
+ },
15612
+ "education": {
15613
+ "purpose": "Track Risks, Assumptions, Issues, and Dependencies in a single living document so the project manager sees all potential blockers in one place.",
15614
+ "core_question": "What are the current risks, untested assumptions, open issues, and external dependencies that could derail this programme?",
15615
+ "when_to_use": [
15616
+ "You are managing complex, multi-team initiatives with dependencies",
15617
+ "You need to track risks, decisions, and milestones across workstreams",
15618
+ "Stakeholders need visibility into programme-level progress"
15619
+ ],
15620
+ "when_not_to_use": [
15621
+ "The project is small enough for a single team to manage",
15622
+ "Formal programme management would create overhead without value"
15623
+ ]
15624
+ }
15625
+ },
15626
+ {
15627
+ "id": "ice-scoring",
15628
+ "approach_ids": [
15629
+ "prioritise"
15630
+ ],
15631
+ "name": "ICE Scoring",
15632
+ "version": "1.0.0",
15633
+ "description": "Rate ideas by Impact, Confidence, and Ease on a 1-10 scale. Multiply for a composite score. Fast and lightweight.",
15634
+ "category": "prioritization",
15635
+ "origin": {
15636
+ "type": "practitioner",
15637
+ "attribution": "Sean Ellis",
15638
+ "description": "Created by Sean Ellis as a lightweight growth experiment scoring method. Widely adopted in growth teams.",
15639
+ "year": 2010,
15640
+ "license": "open_attribution"
15641
+ },
15642
+ "tags": [
15643
+ "prioritization",
15644
+ "table"
15645
+ ],
15646
+ "slots": [
15647
+ {
15648
+ "label": "Items to score",
15649
+ "entityTypeId": "feature",
15650
+ "description": "Features or experiments being evaluated"
15651
+ },
15652
+ {
15653
+ "label": "Impact",
15654
+ "entityTypeId": "outcome",
15655
+ "description": "How much will this move the needle?"
15656
+ },
15657
+ {
15658
+ "label": "Confidence",
15659
+ "entityTypeId": "assumption",
15660
+ "description": "How sure are we about the impact?"
15661
+ },
15662
+ {
15663
+ "label": "Ease",
15664
+ "entityTypeId": "feature",
15665
+ "description": "How easy is this to implement?"
15666
+ }
15667
+ ],
15668
+ "data": {
15669
+ "entity_types": [
15670
+ {
15671
+ "type": "feature",
15672
+ "role": "scored_item"
15673
+ },
15674
+ {
15675
+ "type": "outcome",
15676
+ "role": "item"
15677
+ },
15678
+ {
15679
+ "type": "assumption",
15680
+ "role": "item"
15681
+ }
15682
+ ],
15683
+ "required_properties": {
15684
+ "feature": [
15685
+ {
15686
+ "property": "impact",
15687
+ "type": "number",
15688
+ "required": true,
15689
+ "scope": "framework",
15690
+ "label": "Impact",
15691
+ "description": "Expected impact on the target metric (1-10)"
15692
+ },
15693
+ {
15694
+ "property": "confidence",
15695
+ "type": "number",
15696
+ "required": true,
15697
+ "scope": "framework",
15698
+ "label": "Confidence",
15699
+ "description": "Confidence in the impact estimate (1-10)"
15700
+ },
15701
+ {
15702
+ "property": "ease",
15703
+ "type": "number",
15704
+ "required": true,
15705
+ "scope": "framework",
15706
+ "label": "Ease",
15707
+ "description": "Ease of implementation (1-10)"
15708
+ }
15709
+ ]
15710
+ },
15711
+ "computed_properties": [
15712
+ {
15713
+ "property": "ice_score",
15714
+ "expression": "impact * confidence * ease",
15715
+ "entity_type": "feature",
15716
+ "label": "ICE Score",
15717
+ "format": "number"
15718
+ }
15719
+ ]
15720
+ },
15721
+ "structure": {
15722
+ "pattern": "table"
15723
+ },
15724
+ "presentation": {
15725
+ "layout": {
15726
+ "type": "table",
15727
+ "columns": [
15728
+ {
15729
+ "property": "title",
15730
+ "label": "Items to score",
15731
+ "sortable": true
15732
+ },
15733
+ {
15734
+ "property": "impact",
15735
+ "label": "Impact",
15736
+ "sortable": true
15737
+ },
15738
+ {
15739
+ "property": "confidence",
15740
+ "label": "Confidence",
15741
+ "sortable": true
15742
+ },
15743
+ {
15744
+ "property": "ease",
15745
+ "label": "Ease",
15746
+ "sortable": true
15747
+ }
15748
+ ]
15749
+ },
15750
+ "sort_by": {
15751
+ "property": "title",
15752
+ "direction": "asc"
15753
+ },
15754
+ "colour_by": "type",
15755
+ "card_fields": [
15756
+ "title",
15757
+ "description",
15758
+ "status"
15759
+ ]
15760
+ },
15761
+ "education": {
15762
+ "purpose": "Provide a lightweight scoring model for early-stage ideas when detailed effort estimates are unavailable. Faster than RICE and useful for brainstorm triage.",
15763
+ "core_question": "Which ideas should we investigate further based on their potential impact, confidence in our assumptions, and implementation ease?",
15764
+ "when_to_use": [
15765
+ "You have more ideas or features than capacity to build them",
15766
+ "Stakeholders disagree on what to build next",
15767
+ "You need a transparent, defensible prioritisation process"
15768
+ ],
15769
+ "when_not_to_use": [
15770
+ "You have a single obvious next step with no contention",
15771
+ "The backlog is small enough to sequence intuitively"
15772
+ ]
15773
+ }
15774
+ },
15775
+ {
15776
+ "id": "wsjf",
15777
+ "approach_ids": [
15778
+ "prioritise"
15779
+ ],
15780
+ "name": "WSJF (Weighted Shortest Job First)",
15781
+ "version": "1.0.0",
15782
+ "description": "Prioritise work by dividing Cost of Delay (user value + time criticality + risk reduction) by job duration to maximise economic throughput.",
15783
+ "category": "planning",
15784
+ "origin": {
15785
+ "type": "practitioner",
15786
+ "attribution": "Reinertsen / SAFe",
15787
+ "description": "Developed by Don Reinertsen and adopted as a core practice in the Scaled Agile Framework (SAFe). Combines urgency (Cost of Delay) with job size to produce an economic prioritisation sequence.",
15788
+ "url": "https://www.scaledagileframework.com/wsjf/",
15789
+ "year": 2011,
15790
+ "license": "open_attribution"
15791
+ },
15792
+ "tags": [
15793
+ "planning",
15794
+ "table"
15795
+ ],
15796
+ "slots": [
15797
+ {
15798
+ "label": "Backlog Items",
15799
+ "entityTypeId": "feature",
15800
+ "description": "Backlog Items: feature entries to evaluate"
15801
+ },
15802
+ {
15803
+ "label": "User/Business Value",
15804
+ "entityTypeId": "metric",
15805
+ "description": "User/Business Value: metric entries to evaluate"
15806
+ },
15807
+ {
15808
+ "label": "Time Criticality",
15809
+ "entityTypeId": "metric",
15810
+ "description": "How much value decays if delivery is delayed (deadlines, competition, seasonal windows)"
15811
+ },
15812
+ {
15813
+ "label": "Risk Reduction / Opportunity Enablement",
15814
+ "entityTypeId": "metric",
15815
+ "description": "Risk Reduction / Opportunity Enablement: metric entries to evaluate"
15816
+ },
15817
+ {
15818
+ "label": "Job Size",
15819
+ "entityTypeId": "metric",
15820
+ "description": "Estimated effort (story points, t-shirt size, or person-weeks)"
15821
+ }
15822
+ ],
15823
+ "data": {
15824
+ "entity_types": [
15825
+ {
15826
+ "type": "feature",
15827
+ "role": "scored_item"
15828
+ },
15829
+ {
15830
+ "type": "metric",
15831
+ "role": "item"
15832
+ }
15833
+ ],
15834
+ "required_properties": {
15835
+ "feature": [
15836
+ {
15837
+ "property": "user_value",
15838
+ "type": "number",
15839
+ "required": true,
15840
+ "scope": "framework",
15841
+ "label": "User/Business Value",
15842
+ "description": "Relative value to users and the business if delivered"
15843
+ },
15844
+ {
15845
+ "property": "time_criticality",
15846
+ "type": "number",
15847
+ "required": true,
15848
+ "scope": "framework",
15849
+ "label": "Time Criticality",
15850
+ "description": "How much value decays if delivery is delayed (deadlines, competition, seasonal windows)"
15851
+ },
15852
+ {
15853
+ "property": "risk_reduction",
15854
+ "type": "number",
15855
+ "required": true,
15856
+ "scope": "framework",
15857
+ "label": "Risk Reduction / Opportunity Enablement",
15858
+ "description": "Value from reducing risk or enabling future opportunities"
15859
+ },
15860
+ {
15861
+ "property": "job_size",
15862
+ "type": "number",
15863
+ "required": true,
15864
+ "scope": "framework",
15865
+ "label": "Job Size",
15866
+ "description": "Estimated effort (story points, t-shirt size, or person-weeks)"
15867
+ }
15868
+ ]
15869
+ },
15870
+ "computed_properties": [
15871
+ {
15872
+ "property": "wsjf_score",
15873
+ "expression": "(user_value + time_criticality + risk_reduction) / job_size",
15874
+ "entity_type": "feature",
15875
+ "label": "WSJF Score",
15876
+ "format": "number"
15877
+ }
15878
+ ]
15879
+ },
15880
+ "structure": {
15881
+ "pattern": "table"
15882
+ },
15883
+ "presentation": {
15884
+ "layout": {
15885
+ "type": "table",
15886
+ "columns": [
15887
+ {
15888
+ "property": "title",
15889
+ "label": "Backlog Items",
15890
+ "sortable": true
15891
+ },
15892
+ {
15893
+ "property": "user_value",
15894
+ "label": "User/Business Value",
15895
+ "sortable": true
15896
+ },
15897
+ {
15898
+ "property": "time_criticality",
15899
+ "label": "Time Criticality",
15900
+ "sortable": true
15901
+ },
15902
+ {
15903
+ "property": "risk_reduction",
15904
+ "label": "Risk Reduction / Opportunity Enablement",
15905
+ "sortable": true
15906
+ },
15907
+ {
15908
+ "property": "job_size",
15909
+ "label": "Job Size",
15910
+ "sortable": true
15911
+ },
15912
+ {
15913
+ "property": "wsjf_score",
15914
+ "label": "WSJF Score",
15915
+ "sortable": true
15916
+ }
15917
+ ]
15918
+ },
15919
+ "sort_by": {
15920
+ "property": "title",
15921
+ "direction": "asc"
15922
+ },
15923
+ "colour_by": "type",
15924
+ "card_fields": [
15925
+ "title",
15926
+ "description",
15927
+ "status"
15928
+ ]
15929
+ },
15930
+ "education": {
15931
+ "purpose": "Prioritise work by dividing the Cost of Delay by job duration, ensuring the most time-sensitive, valuable items are done first.",
15932
+ "core_question": "Considering the cost of waiting, which items should we start now to maximise economic benefit?",
15933
+ "when_to_use": [
15934
+ "You need to coordinate work across multiple teams or time horizons",
15935
+ "Stakeholders need visibility into what is coming and when",
15936
+ "You want to balance commitments with flexibility"
15937
+ ],
15938
+ "when_not_to_use": [
15939
+ "The team is small enough that informal coordination works",
15940
+ "Plans would create false precision about uncertain outcomes"
15941
+ ]
15942
+ }
15943
+ },
15944
+ {
15945
+ "id": "cost-of-delay",
15946
+ "approach_ids": [
15947
+ "prioritise"
15948
+ ],
15949
+ "name": "Cost of Delay",
15950
+ "version": "1.0.0",
15951
+ "description": "Quantify the economic cost of not shipping a feature to drive priority decisions. Combines urgency with value.",
15952
+ "category": "prioritization",
15953
+ "origin": {
15954
+ "type": "practitioner",
15955
+ "attribution": "Don Reinertsen",
15956
+ "description": "Formalised in The Principles of Product Development Flow (Celeritas Publishing). Foundational to lean product economics.",
15957
+ "year": 2009,
15958
+ "license": "public_domain"
15959
+ },
15960
+ "tags": [
15961
+ "prioritization",
15962
+ "table"
15963
+ ],
15964
+ "slots": [
15965
+ {
15966
+ "label": "Items to evaluate",
15967
+ "entityTypeId": "feature",
15968
+ "description": "Features or initiatives being assessed"
15969
+ },
15970
+ {
15971
+ "label": "User-Business Value",
15972
+ "entityTypeId": "outcome",
15973
+ "description": "Revenue, retention, or strategic value"
15974
+ },
15975
+ {
15976
+ "label": "Time Criticality",
15977
+ "entityTypeId": "metric",
15978
+ "description": "How much value decays with delay"
15979
+ },
15980
+ {
15981
+ "label": "Risk Reduction",
15982
+ "entityTypeId": "risk",
15983
+ "description": "What risk does this mitigate?"
15984
+ }
15985
+ ],
15986
+ "data": {
15987
+ "entity_types": [
15988
+ {
15989
+ "type": "feature",
15990
+ "role": "scored_item"
15991
+ },
15992
+ {
15993
+ "type": "metric",
15994
+ "role": "item"
15995
+ },
15996
+ {
15997
+ "type": "outcome",
15998
+ "role": "item"
15999
+ },
16000
+ {
16001
+ "type": "risk",
16002
+ "role": "item"
16003
+ }
16004
+ ],
16005
+ "required_properties": {
16006
+ "feature": [
16007
+ {
16008
+ "property": "cost_of_delay",
16009
+ "type": "number",
16010
+ "required": true,
16011
+ "scope": "framework",
16012
+ "label": "Cost of Delay",
16013
+ "description": "Weekly revenue impact of not shipping"
16014
+ },
16015
+ {
16016
+ "property": "job_size",
16017
+ "type": "number",
16018
+ "required": true,
16019
+ "scope": "framework",
16020
+ "label": "Job Size",
16021
+ "description": "Weeks of development effort"
16022
+ }
16023
+ ]
16024
+ },
16025
+ "computed_properties": [
16026
+ {
16027
+ "property": "wsjf_score",
16028
+ "expression": "cost_of_delay / job_size",
16029
+ "entity_type": "feature",
16030
+ "label": "WSJF Score",
16031
+ "format": "number"
16032
+ }
16033
+ ]
16034
+ },
16035
+ "structure": {
16036
+ "pattern": "table"
16037
+ },
16038
+ "presentation": {
16039
+ "layout": {
16040
+ "type": "table",
16041
+ "columns": [
16042
+ {
16043
+ "property": "title",
16044
+ "label": "Items to evaluate",
16045
+ "sortable": true
16046
+ },
16047
+ {
16048
+ "property": "cost_of_delay",
16049
+ "label": "User-Business Value",
16050
+ "sortable": true
16051
+ },
16052
+ {
16053
+ "property": "job_size",
16054
+ "label": "Job Size",
16055
+ "sortable": true
16056
+ },
16057
+ {
16058
+ "property": "wsjf_score",
16059
+ "label": "CoD Score",
16060
+ "sortable": true
16061
+ }
16062
+ ]
16063
+ },
16064
+ "sort_by": {
16065
+ "property": "title",
16066
+ "direction": "asc"
16067
+ },
16068
+ "colour_by": "type",
16069
+ "card_fields": [
16070
+ "title",
16071
+ "description",
16072
+ "status"
16073
+ ]
16074
+ },
16075
+ "education": {
16076
+ "purpose": "Quantify the economic impact of not delivering a feature by a given date, making urgency visible and enabling time-sensitive prioritisation.",
16077
+ "core_question": "How much value are we losing every week this feature is not in production, and does that urgency justify fast-tracking it?",
16078
+ "when_to_use": [
16079
+ "You have more ideas or features than capacity to build them",
16080
+ "Stakeholders disagree on what to build next",
16081
+ "You need a transparent, defensible prioritisation process"
16082
+ ],
16083
+ "when_not_to_use": [
16084
+ "You have a single obvious next step with no contention",
16085
+ "The backlog is small enough to sequence intuitively"
16086
+ ]
16087
+ }
16088
+ },
16089
+ {
16090
+ "id": "five-whys",
16091
+ "approach_ids": [
16092
+ "reflect",
16093
+ "inspect"
16094
+ ],
16095
+ "name": "Five Whys",
16096
+ "version": "1.0.0",
16097
+ "description": 'Iteratively ask "why?", typically five times, starting from a symptom; each answer becomes the subject of the next question. The chain of answers reveals the underlying root cause behind the surface problem.',
16098
+ "category": "team_process",
16099
+ "origin": {
16100
+ "type": "practitioner",
16101
+ "attribution": "Sakichi Toyoda / Toyota Production System",
16102
+ "description": "Developed within the Toyota Production System as a root-cause analysis technique. Popularised through Lean and Six Sigma practice; now a widely used incident-review and design-debug staple.",
16103
+ "year": 1930,
16104
+ "license": "public_domain"
16105
+ },
16106
+ "tags": [
16107
+ "team_process",
16108
+ "reflection",
16109
+ "root_cause",
16110
+ "tree"
16111
+ ],
16112
+ "slots": [
16113
+ {
16114
+ "label": "Symptom",
16115
+ "entityTypeId": "need",
16116
+ "description": "The observed problem the analysis starts from."
16117
+ },
16118
+ {
16119
+ "label": "Why chain",
16120
+ "entityTypeId": "insight",
16121
+ "description": 'Each "why?" answer along the chain, typically five iterations deep.'
16122
+ },
16123
+ {
16124
+ "label": "Root cause",
16125
+ "entityTypeId": "insight",
16126
+ "description": "The terminal answer at the bottom of the chain: the underlying cause to address."
16127
+ }
16128
+ ],
16129
+ "data": {
16130
+ "entity_types": [
16131
+ {
16132
+ "type": "need",
16133
+ "role": "root"
16134
+ },
16135
+ {
16136
+ "type": "insight",
16137
+ "role": "branch"
16138
+ }
16139
+ ],
16140
+ "required_properties": {}
16141
+ },
16142
+ "structure": {
16143
+ "pattern": "tree"
16144
+ },
16145
+ "presentation": {
16146
+ "layout": {
16147
+ "type": "tree",
16148
+ "direction": "TB"
16149
+ },
16150
+ "sort_by": {
16151
+ "property": "title",
16152
+ "direction": "asc"
16153
+ },
16154
+ "card_fields": [
16155
+ "title",
16156
+ "description"
16157
+ ]
16158
+ },
16159
+ "education": {
16160
+ "purpose": 'Move past surface symptoms by chaining "why?" questions until the underlying root cause surfaces, so fixes target the real driver rather than a downstream effect.',
16161
+ "core_question": "Why is this happening, and why is THAT happening, until we reach a cause we can act on?",
16162
+ "when_to_use": [
16163
+ "A problem keeps recurring after surface fixes",
16164
+ "Post-incident review where the obvious cause feels too obvious",
16165
+ "Designing a fix and you want to confirm you understand the actual driver"
16166
+ ],
16167
+ "when_not_to_use": [
16168
+ "The problem has multiple independent root causes (use a fishbone or richer RCA tool)",
16169
+ "You need quantitative attribution rather than a single-thread narrative",
16170
+ 'Five linear "whys" oversimplify a systems problem with feedback loops'
16171
+ ]
16172
+ }
16173
+ },
16174
+ {
16175
+ "id": "pre-mortem",
16176
+ "approach_ids": [
16177
+ "reflect"
16178
+ ],
16179
+ "name": "Pre-mortem",
16180
+ "version": "1.0.0",
16181
+ "description": "Imagine the project has already failed; work backward listing the plausible causes of the failure. Produce a risk register and matching mitigations before the work starts.",
16182
+ "category": "team_process",
16183
+ "origin": {
16184
+ "type": "practitioner",
16185
+ "attribution": "Gary Klein",
16186
+ "description": "Popularised by Gary Klein in Harvard Business Review (2007) as a prospective-hindsight technique. Inverts the post-mortem: imagine failure first, then list causes, while there is still time to act.",
16187
+ "url": "https://hbr.org/2007/09/performing-a-project-premortem",
16188
+ "year": 2007,
16189
+ "license": "published_methodology"
16190
+ },
16191
+ "tags": [
16192
+ "team_process",
16193
+ "reflection",
16194
+ "risk",
16195
+ "collection"
16196
+ ],
16197
+ "slots": [
16198
+ {
16199
+ "label": "Imagined failures",
16200
+ "entityTypeId": "risk",
16201
+ "description": "Plausible failure modes named as if they had already occurred."
16202
+ },
16203
+ {
16204
+ "label": "Causes",
16205
+ "entityTypeId": "insight",
16206
+ "description": "For each imagined failure, the contributing causes the team can foresee."
16207
+ },
16208
+ {
16209
+ "label": "Mitigations",
16210
+ "entityTypeId": "initiative",
16211
+ "description": "Mitigation actions the team will take before failure can occur."
16212
+ }
16213
+ ],
16214
+ "data": {
16215
+ "entity_types": [
16216
+ {
16217
+ "type": "risk",
16218
+ "role": "bucket"
16219
+ },
16220
+ {
16221
+ "type": "insight",
16222
+ "role": "bucket"
16223
+ },
16224
+ {
16225
+ "type": "initiative",
16226
+ "role": "bucket"
16227
+ }
16228
+ ],
16229
+ "required_properties": {}
16230
+ },
16231
+ "structure": {
16232
+ "pattern": "collection"
16233
+ },
16234
+ "presentation": {
16235
+ "layout": {
16236
+ "type": "grid",
16237
+ "groupBy": "type"
16238
+ },
16239
+ "sort_by": {
16240
+ "property": "title",
16241
+ "direction": "asc"
16242
+ },
16243
+ "colour_by": "group",
16244
+ "card_fields": [
16245
+ "title",
16246
+ "description"
16247
+ ]
16248
+ },
16249
+ "education": {
16250
+ "purpose": "Surface project risks early by inverting hindsight: imagine the project has already failed and ask why, while there is still time to mitigate.",
16251
+ "core_question": "It is six months from now and the project has failed catastrophically. What happened, and why?",
16252
+ "when_to_use": [
16253
+ "Kicking off a project with significant downside or irreversible commitment",
16254
+ "A plan looks too clean and the team senses unspoken concerns",
16255
+ "Stakeholders disagree on risk; the exercise externalises and ranks them"
16256
+ ],
16257
+ "when_not_to_use": [
16258
+ "The work is small, reversible, and cheap to course-correct",
16259
+ "The team is in execution mode and reflective ceremonies will derail momentum",
16260
+ "Risk surfacing has become performative: the team names risks but never mitigates them"
16261
+ ]
16262
+ }
16263
+ },
16264
+ {
16265
+ "id": "red-team",
16266
+ "approach_ids": [
16267
+ "reflect",
16268
+ "inspect"
16269
+ ],
16270
+ "name": "Red Team",
16271
+ "version": "1.0.0",
16272
+ "description": "Structured adversarial review. A designated group is assigned to attack a plan, design, or proposal from an outside-in stance, surfacing weaknesses the inside-out builders cannot see.",
16273
+ "category": "team_process",
16274
+ "origin": {
16275
+ "type": "practitioner",
16276
+ "attribution": "US Department of Defense (Cold War era); broadened by security and intelligence practice",
16277
+ "description": `Originated in Cold War-era military strategic exercises ("red" team takes the adversary role against the "blue" team's defence). Adopted by cybersecurity, intelligence analysis, and product teams as a structured contrarian-review practice.`,
16278
+ "year": 1960,
16279
+ "license": "public_domain"
16280
+ },
16281
+ "tags": [
16282
+ "team_process",
16283
+ "reflection",
16284
+ "adversarial",
16285
+ "collection"
16286
+ ],
16287
+ "slots": [
16288
+ {
16289
+ "label": "Target",
16290
+ "entityTypeId": "initiative",
16291
+ "description": "The plan, design, or proposal under adversarial review."
16292
+ },
16293
+ {
16294
+ "label": "Attack vectors",
16295
+ "entityTypeId": "risk",
16296
+ "description": "The angles the red team uses to probe weaknesses."
16297
+ },
16298
+ {
16299
+ "label": "Findings",
16300
+ "entityTypeId": "insight",
16301
+ "description": "Weaknesses, blind spots, or unstated assumptions surfaced by the review."
16302
+ }
16303
+ ],
16304
+ "data": {
16305
+ "entity_types": [
16306
+ {
16307
+ "type": "initiative",
16308
+ "role": "root"
16309
+ },
16310
+ {
16311
+ "type": "risk",
16312
+ "role": "bucket"
16313
+ },
16314
+ {
16315
+ "type": "insight",
16316
+ "role": "bucket"
16317
+ }
16318
+ ],
16319
+ "required_properties": {}
16320
+ },
16321
+ "structure": {
16322
+ "pattern": "collection"
16323
+ },
16324
+ "presentation": {
16325
+ "layout": {
16326
+ "type": "grid",
16327
+ "groupBy": "type"
16328
+ },
16329
+ "sort_by": {
16330
+ "property": "title",
16331
+ "direction": "asc"
16332
+ },
16333
+ "colour_by": "group",
16334
+ "card_fields": [
16335
+ "title",
16336
+ "description"
16337
+ ]
16338
+ },
16339
+ "education": {
16340
+ "purpose": "Stress-test a plan against an explicit adversary by assigning reviewers to attack rather than agree, so weaknesses surface before reality finds them.",
16341
+ "core_question": "If a competent adversary wanted this to fail, where would they push first, and would we hold?",
16342
+ "when_to_use": [
16343
+ "A high-stakes decision, launch, or security posture needs hardening",
16344
+ "Inside-out thinking is dominant and dissent has gone quiet",
16345
+ "Risk register is suspiciously short for the size of the bet"
16346
+ ],
16347
+ "when_not_to_use": [
16348
+ "Early-stage exploration where adversarial framing would crush a fragile idea prematurely",
16349
+ "Team trust is too low: red-teaming will read as personal attack rather than role-play",
16350
+ "The work is small enough that a lightweight devil's-advocate pass is sufficient"
16351
+ ]
16352
+ }
16353
+ },
16354
+ {
16355
+ "id": "devils-advocate",
16356
+ "approach_ids": [
16357
+ "reflect"
16358
+ ],
16359
+ "name": "Devil's Advocate",
16360
+ "version": "1.0.0",
16361
+ "description": "Designate one reviewer to formally take the opposing position regardless of personal view. The assigned-role contrarian defangs groupthink by making dissent legitimate and structured.",
16362
+ "category": "team_process",
16363
+ "origin": {
16364
+ "type": "practitioner",
16365
+ "attribution": "Roman Catholic Church (advocatus diaboli); broadened by decision-quality practice",
16366
+ "description": "Originated in 16th-century canonisation proceedings as the advocatus diaboli, an official assigned to argue against canonising a candidate. Adopted by decision-science and product-team practice as a structured antidote to groupthink.",
16367
+ "year": 1587,
16368
+ "license": "public_domain"
16369
+ },
16370
+ "tags": [
16371
+ "team_process",
16372
+ "reflection",
16373
+ "decision_quality",
16374
+ "collection"
16375
+ ],
16376
+ "slots": [
16377
+ {
16378
+ "label": "Proposal",
16379
+ "entityTypeId": "initiative",
16380
+ "description": "The plan or recommendation under consideration."
16381
+ },
16382
+ {
16383
+ "label": "Opposing arguments",
16384
+ "entityTypeId": "insight",
16385
+ "description": "The case against the proposal, voiced by the assigned contrarian regardless of personal view."
16386
+ },
16387
+ {
16388
+ "label": "Counter-evidence",
16389
+ "entityTypeId": "evidence",
16390
+ "description": "Data points the contrarian raises that the proposal does not yet account for."
15376
16391
  }
15377
16392
  ],
15378
16393
  "data": {
15379
16394
  "entity_types": [
15380
16395
  {
15381
- "type": "team",
15382
- "role": "scored_item"
15383
- },
15384
- {
15385
- "type": "retrospective",
15386
- "role": "item"
16396
+ "type": "initiative",
16397
+ "role": "root"
15387
16398
  },
15388
16399
  {
15389
- "type": "metric",
15390
- "role": "item"
16400
+ "type": "insight",
16401
+ "role": "bucket"
15391
16402
  },
15392
16403
  {
15393
- "type": "team_okr",
15394
- "role": "item"
16404
+ "type": "evidence",
16405
+ "role": "bucket"
15395
16406
  }
15396
16407
  ],
15397
- "required_properties": {},
15398
- "computed_properties": [
15399
- {
15400
- "property": "health_index",
15401
- "expression": "(green_count - red_count) / total_indicators",
15402
- "entity_type": "team",
15403
- "label": "Health Index",
15404
- "format": "number"
15405
- }
15406
- ]
16408
+ "required_properties": {}
15407
16409
  },
15408
16410
  "structure": {
15409
- "pattern": "table"
16411
+ "pattern": "collection"
15410
16412
  },
15411
16413
  "presentation": {
15412
16414
  "layout": {
15413
- "type": "table",
15414
- "columns": [
15415
- {
15416
- "property": "title",
15417
- "label": "Team",
15418
- "sortable": true
15419
- },
15420
- {
15421
- "property": "title",
15422
- "label": "Retrospective",
15423
- "sortable": true
15424
- },
15425
- {
15426
- "property": "description",
15427
- "label": "Metric"
15428
- },
15429
- {
15430
- "property": "title",
15431
- "label": "Team OKR",
15432
- "sortable": true
15433
- }
15434
- ]
16415
+ "type": "grid",
16416
+ "groupBy": "type"
15435
16417
  },
15436
16418
  "sort_by": {
15437
16419
  "property": "title",
15438
16420
  "direction": "asc"
15439
16421
  },
15440
- "colour_by": "type",
16422
+ "colour_by": "group",
15441
16423
  "card_fields": [
15442
16424
  "title",
15443
- "description",
15444
- "status"
16425
+ "description"
15445
16426
  ]
15446
16427
  },
15447
16428
  "education": {
15448
- "purpose": "Regularly assess team health across dimensions (psychological safety, autonomy, mission clarity, fun, speed, learning) to catch problems early and celebrate strengths.",
15449
- "core_question": "How is the team really doing: where do they feel strong, where do they feel stuck, and what has changed since last check?",
16429
+ "purpose": "Make dissent a legitimate role rather than a personal stance. Assigning one reviewer to argue against the proposal forces the team to confront the strongest counter-case.",
16430
+ "core_question": "If we had to argue against this proposal (not because we believe it, but because the role demands it) what is the strongest case?",
15450
16431
  "when_to_use": [
15451
- "You need to improve team collaboration, clarity, or effectiveness",
15452
- "Roles and responsibilities are unclear or causing friction",
15453
- "You want to establish or improve team processes and ceremonies"
16432
+ "A decision is heading toward consensus and you suspect groupthink",
16433
+ "Stakes are high and the team has not heard a serious counter-argument",
16434
+ "Cultural norms make raw dissent costly; assigning the role lowers the social cost"
15454
16435
  ],
15455
16436
  "when_not_to_use": [
15456
- "The team is small and informal coordination works well",
15457
- "Process overhead would slow down a team that needs speed"
16437
+ "Genuine disagreement already exists in the room (let it surface; do not theatricalise it)",
16438
+ "The decision is small enough that the ceremony costs more than the insight returned",
16439
+ "The assigned contrarian will be punished socially for the role; set the norms first or skip"
15458
16440
  ]
15459
16441
  }
15460
16442
  },
15461
16443
  {
15462
- "id": "raid-log",
15463
- "name": "RAID Log",
16444
+ "id": "second-order-thinking",
16445
+ "approach_ids": [
16446
+ "reflect"
16447
+ ],
16448
+ "name": "Second-order Thinking",
15464
16449
  "version": "1.0.0",
15465
- "description": "A project management register tracking Risks, Assumptions, Issues, and Dependencies, the four categories most likely to derail a project if left unmanaged.",
15466
- "category": "program_mgmt",
16450
+ "description": 'After deciding a move, ask "and then what?" repeatedly. Trace second-, third-, and higher-order consequences to surface downstream effects that first-order reasoning misses.',
16451
+ "category": "team_process",
15467
16452
  "origin": {
15468
16453
  "type": "practitioner",
15469
- "description": "Standard project management tool used across methodologies. The RAID log (Risks, Assumptions, Issues, Dependencies) provides a single living document for tracking all factors that could derail a programme.",
15470
- "license": "cc_by"
16454
+ "attribution": "Howard Marks / Charlie Munger",
16455
+ "description": `Howard Marks distinguished first-order vs second-order thinking in The Most Important Thing (2011) as the essential discipline of consequential decision-making. Charlie Munger's "and then what?" framing is the practical heuristic.`,
16456
+ "url": "https://www.oaktreecapital.com/insights/memo/dare-to-be-great-ii",
16457
+ "year": 2011,
16458
+ "license": "published_methodology"
15471
16459
  },
15472
16460
  "tags": [
15473
- "program_mgmt",
15474
- "table"
16461
+ "team_process",
16462
+ "reflection",
16463
+ "consequences",
16464
+ "tree"
15475
16465
  ],
15476
16466
  "slots": [
15477
16467
  {
15478
- "label": "Risk Register",
15479
- "entityTypeId": "risk_register",
15480
- "description": "Risk or assumption logged with likelihood, impact, owner, and mitigation strategy"
15481
- },
15482
- {
15483
- "label": "Dependency",
15484
- "entityTypeId": "dependency",
15485
- "description": "Dependency on another team, system, or deliverable that could block progress if not resolved"
16468
+ "label": "First-order move",
16469
+ "entityTypeId": "decision",
16470
+ "description": "The decision or move under consideration."
15486
16471
  },
15487
16472
  {
15488
- "label": "Status Report",
15489
- "entityTypeId": "status_report",
15490
- "description": "Status update summarising RAID log changes: new risks, resolved issues, and dependency updates"
16473
+ "label": "Second-order consequences",
16474
+ "entityTypeId": "insight",
16475
+ "description": "Downstream effects that follow from the first-order move."
15491
16476
  },
15492
16477
  {
15493
- "label": "Deliverable",
15494
- "entityTypeId": "deliverable",
15495
- "description": "Deliverable affected by logged risks, issues, or dependencies, linking RAID items to project scope"
16478
+ "label": "Higher-order consequences",
16479
+ "entityTypeId": "insight",
16480
+ "description": "Third-, fourth-, fifth-order ripples: second-order consequences of the second-order consequences."
15496
16481
  }
15497
16482
  ],
15498
16483
  "data": {
15499
16484
  "entity_types": [
15500
16485
  {
15501
- "type": "risk_register",
15502
- "role": "item"
15503
- },
15504
- {
15505
- "type": "dependency",
15506
- "role": "item"
15507
- },
15508
- {
15509
- "type": "status_report",
15510
- "role": "item"
16486
+ "type": "decision",
16487
+ "role": "root"
15511
16488
  },
15512
16489
  {
15513
- "type": "deliverable",
15514
- "role": "item"
16490
+ "type": "insight",
16491
+ "role": "branch"
15515
16492
  }
15516
16493
  ],
15517
- "required_properties": {},
15518
- "computed_properties": [
15519
- {
15520
- "property": "severity",
15521
- "expression": "probability * impact",
15522
- "entity_type": "risk",
15523
- "label": "Severity",
15524
- "format": "number"
15525
- }
15526
- ]
16494
+ "required_properties": {}
15527
16495
  },
15528
16496
  "structure": {
15529
- "pattern": "table"
16497
+ "pattern": "tree"
15530
16498
  },
15531
16499
  "presentation": {
15532
16500
  "layout": {
15533
- "type": "table",
15534
- "columns": [
15535
- {
15536
- "property": "title",
15537
- "label": "Item",
15538
- "sortable": true
15539
- },
15540
- {
15541
- "property": "description",
15542
- "label": "Category"
15543
- },
15544
- {
15545
- "property": "status",
15546
- "label": "Status"
15547
- },
15548
- {
15549
- "property": "description",
15550
- "label": "Owner / Action"
15551
- }
15552
- ]
16501
+ "type": "tree",
16502
+ "direction": "TB"
15553
16503
  },
15554
16504
  "sort_by": {
15555
16505
  "property": "title",
15556
16506
  "direction": "asc"
15557
16507
  },
15558
- "colour_by": "type",
15559
16508
  "card_fields": [
15560
16509
  "title",
15561
- "description",
15562
- "status"
16510
+ "description"
15563
16511
  ]
15564
16512
  },
15565
16513
  "education": {
15566
- "purpose": "Track Risks, Assumptions, Issues, and Dependencies in a single living document so the project manager sees all potential blockers in one place.",
15567
- "core_question": "What are the current risks, untested assumptions, open issues, and external dependencies that could derail this programme?",
16514
+ "purpose": 'Resist first-order reasoning by chaining "and then what?" until non-obvious downstream consequences come into view.',
16515
+ "core_question": "If we make this move and it works, what does the world look like next, and is that the world we want?",
15568
16516
  "when_to_use": [
15569
- "You are managing complex, multi-team initiatives with dependencies",
15570
- "You need to track risks, decisions, and milestones across workstreams",
15571
- "Stakeholders need visibility into programme-level progress"
16517
+ "A decision has feedback loops, market reactions, or behavioural ripples",
16518
+ "The first-order case is compelling, which is exactly when downstream effects bite",
16519
+ "Considering an irreversible or large-scale commitment"
15572
16520
  ],
15573
16521
  "when_not_to_use": [
15574
- "The project is small enough for a single team to manage",
15575
- "Formal programme management would create overhead without value"
16522
+ "Routine, reversible, low-blast-radius decisions where deliberation costs more than mistakes",
16523
+ "Higher-order branches diverge into pure speculation with no anchor in evidence",
16524
+ "Time pressure makes a deeper trace expensive and the first-order call is good enough"
15576
16525
  ]
15577
16526
  }
15578
16527
  }
@@ -16518,17 +17467,6 @@ function seqStep(order, phase, entity_types, prompt_hint, options) {
16518
17467
  ...options?.next_sequence_on_gap ? { next_sequence_on_gap: options.next_sequence_on_gap } : {}
16519
17468
  };
16520
17469
  }
16521
- function domainGuideStep(domain_id, phase, name, prompt_hint, options) {
16522
- return {
16523
- kind: "domain_guide",
16524
- order: 1,
16525
- phase,
16526
- name,
16527
- prompt_hint,
16528
- domain_id,
16529
- ...options?.next_sequence_on_gap ? { next_sequence_on_gap: options.next_sequence_on_gap } : {}
16530
- };
16531
- }
16532
17470
  var STRATEGY_OUTCOMES_PLAYBOOK = {
16533
17471
  id: "playbook:strategy-outcomes",
16534
17472
  name: "Strategy & Outcomes",
@@ -16537,7 +17475,10 @@ var STRATEGY_OUTCOMES_PLAYBOOK = {
16537
17475
  region: "strategy_outcomes",
16538
17476
  is_canonical: true,
16539
17477
  related_framework_ids: ["okr-framework", "three-horizons", "north-star-metric", "metrics-tree", "wardley-map"],
16540
- target_anchor_entity: "objective",
17478
+ // DT-PB-3: anchor is `outcome`, not `objective`. The creation_sequence
17479
+ // creates outcome (step 3) before objective (step 4), and outcome is the
17480
+ // strategy region's gravitational centre (objectives translate outcomes).
17481
+ target_anchor_entity: "outcome",
16541
17482
  creation_sequence: [
16542
17483
  seqStep(
16543
17484
  1,
@@ -16580,7 +17521,7 @@ var STRATEGY_OUTCOMES_PLAYBOOK = {
16580
17521
  "Assumptions & Decisions",
16581
17522
  ["assumption", "decision"],
16582
17523
  "Capture the bets you are making (assumptions) and the choices you have ratified (decisions). These guard the work against silent drift.",
16583
- { next_sequence_on_gap: "playbook:discovery-validation-hypothesis-cycle" }
17524
+ { next_sequence_on_gap: "playbook:discovery-research-validation" }
16584
17525
  )
16585
17526
  ]
16586
17527
  };
@@ -16693,25 +17634,12 @@ var DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK = {
16693
17634
  seqStep(
16694
17635
  8,
16695
17636
  "Test",
16696
- ["experiment", "test_plan", "evidence"],
16697
- "Validate with targeted experiments. Close the loop between research and action."
16698
- )
16699
- ]
16700
- };
16701
- var DISCOVERY_VALIDATION_HYPOTHESIS_PLAYBOOK = {
16702
- id: "playbook:discovery-validation-hypothesis-cycle",
16703
- name: "Hypothesis Validation",
16704
- version: "0.1.0",
16705
- description: "Tight hypothesis \u2192 experiment \u2192 evidence \u2192 learning loop. Run after research has surfaced an opportunity.",
16706
- region: "discovery_research_validation",
16707
- framework_id: "build-measure-learn",
16708
- target_anchor_entity: "hypothesis",
16709
- creation_sequence: [
16710
- domainGuideStep(
16711
- "validation",
16712
- "Validation",
16713
- "Frame & test",
16714
- "Run the validation creation sequence: hypothesis, experiment, evidence, learning."
17637
+ // DT-PB-1: was `experiment` — which resolves to NO canonical edge with
17638
+ // hypothesis or test_plan, forcing an orphan. `experiment_run` is the
17639
+ // hypothesis-linked test unit (experiment_run_validates_hypothesis,
17640
+ // test_plan_ran_as_experiment_run, experiment_run_yields_evidence).
17641
+ ["experiment_run", "test_plan", "evidence"],
17642
+ "Validate with targeted experiment runs. Close the loop between research and action."
16715
17643
  )
16716
17644
  ]
16717
17645
  };
@@ -16758,8 +17686,8 @@ var MARKET_COMPETITIVE_PLAYBOOK = {
16758
17686
  seqStep(
16759
17687
  6,
16760
17688
  "Moves",
16761
- ["partnership"],
16762
- "Look where competitors are weak and trends are strong. That intersection is where your moves live, including who to partner with."
17689
+ ["competitive_battle_card"],
17690
+ "Look where competitors are weak and trends are strong. That intersection is where your moves live: arm the team with battle cards that turn each competitor weakness into a position you can win. (Partnership moves belong in the business & GTM playbook, where `partnership` connects.)"
16763
17691
  )
16764
17692
  ]
16765
17693
  };
@@ -16823,54 +17751,6 @@ var EXPERIENCE_DESIGN_BRAND_PLAYBOOK = {
16823
17751
  )
16824
17752
  ]
16825
17753
  };
16826
- var EXPERIENCE_UX_DOMAIN_ONLY_PLAYBOOK = {
16827
- id: "playbook:experience-ux-domain-only",
16828
- name: "UX Design (compact)",
16829
- version: "0.1.0",
16830
- description: "Compact UX-only path. Quick when research and design system are managed separately.",
16831
- region: "experience_design_brand",
16832
- target_anchor_entity: "user_journey",
16833
- creation_sequence: [
16834
- domainGuideStep(
16835
- "ux_design",
16836
- "UX",
16837
- "Journey to screen",
16838
- "Run the ux_design creation sequence: journey, steps, screens, flows, wireframes, prototypes."
16839
- )
16840
- ]
16841
- };
16842
- var EXPERIENCE_DESIGN_SYSTEM_PLAYBOOK = {
16843
- id: "playbook:experience-design-system",
16844
- name: "Design System",
16845
- version: "0.1.0",
16846
- description: "Codify the shared design language: tokens, components, patterns, guidelines.",
16847
- region: "experience_design_brand",
16848
- creation_sequence: [
16849
- domainGuideStep(
16850
- "design_system",
16851
- "Design System",
16852
- "System foundations",
16853
- "Run the design_system creation sequence: tokens, components, patterns, guidelines.",
16854
- { next_sequence_on_gap: "playbook:experience-ux-domain-only" }
16855
- )
16856
- ]
16857
- };
16858
- var EXPERIENCE_CONTENT_PLAYBOOK = {
16859
- id: "playbook:experience-content",
16860
- name: "Content Strategy",
16861
- version: "0.1.0",
16862
- description: "Plan what to publish: strategy, themes, calendar, individual pieces tied to audience and channels.",
16863
- region: "experience_design_brand",
16864
- creation_sequence: [
16865
- domainGuideStep(
16866
- "content",
16867
- "Content",
16868
- "Content plan",
16869
- "Run the content creation sequence: strategy, themes, calendar, pieces.",
16870
- { next_sequence_on_gap: "playbook:business-growth-funnel" }
16871
- )
16872
- ]
16873
- };
16874
17754
  var PRODUCT_DELIVERY_PLAYBOOK = {
16875
17755
  id: "playbook:product-delivery",
16876
17756
  name: "Product Delivery",
@@ -16919,22 +17799,6 @@ var PRODUCT_DELIVERY_PLAYBOOK = {
16919
17799
  )
16920
17800
  ]
16921
17801
  };
16922
- var PRODUCT_FEEDBACK_SYNTHESIS_PLAYBOOK = {
16923
- id: "playbook:product-feedback-synthesis",
16924
- name: "Feedback Synthesis",
16925
- version: "0.1.0",
16926
- description: "Capture and cluster qualitative signal: feedback items, themes, NPS, support tickets.",
16927
- region: "product_delivery",
16928
- creation_sequence: [
16929
- domainGuideStep(
16930
- "feedback",
16931
- "Feedback",
16932
- "Signal capture",
16933
- "Run the feedback creation sequence: items, themes, NPS, support data.",
16934
- { next_sequence_on_gap: "playbook:discovery-validation-hypothesis-cycle" }
16935
- )
16936
- ]
16937
- };
16938
17802
  var ENGINEERING_PLATFORM_PLAYBOOK = {
16939
17803
  id: "playbook:engineering-platform",
16940
17804
  name: "Engineering & Platform",
@@ -16995,21 +17859,6 @@ var ENGINEERING_PLATFORM_PLAYBOOK = {
16995
17859
  )
16996
17860
  ]
16997
17861
  };
16998
- var ENGINEERING_ARCHITECTURE_ONLY_PLAYBOOK = {
16999
- id: "playbook:engineering-architecture-only",
17000
- name: "Architecture (compact)",
17001
- version: "0.1.0",
17002
- description: "Compact architecture-only path. Quick when build/deploy/security are managed separately.",
17003
- region: "engineering_platform",
17004
- creation_sequence: [
17005
- domainGuideStep(
17006
- "engineering",
17007
- "Engineering",
17008
- "System shape",
17009
- "Run the engineering creation sequence: bounded contexts, services, data, decisions."
17010
- )
17011
- ]
17012
- };
17013
17862
  var BUSINESS_GTM_GROWTH_PLAYBOOK = {
17014
17863
  id: "playbook:business-gtm-growth",
17015
17864
  name: "Business, GTM & Growth",
@@ -17064,70 +17913,6 @@ var BUSINESS_GTM_GROWTH_PLAYBOOK = {
17064
17913
  )
17065
17914
  ]
17066
17915
  };
17067
- var BUSINESS_MODEL_BMC_PLAYBOOK = {
17068
- id: "playbook:business-model-bmc",
17069
- name: "Business Model (BMC)",
17070
- version: "0.1.0",
17071
- description: "Design the business model with Business Model Canvas: value props, customer segments, revenue streams, cost structure.",
17072
- region: "business_gtm_growth",
17073
- framework_id: "business-model-canvas",
17074
- creation_sequence: [
17075
- domainGuideStep(
17076
- "business_model",
17077
- "Business",
17078
- "Model canvas",
17079
- "Run the business_model creation sequence: value props, segments, revenue, costs.",
17080
- { next_sequence_on_gap: "playbook:business-pricing" }
17081
- )
17082
- ]
17083
- };
17084
- var BUSINESS_PRICING_PLAYBOOK = {
17085
- id: "playbook:business-pricing",
17086
- name: "Pricing",
17087
- version: "0.1.0",
17088
- description: "Design the revenue engine: pricing strategy, tiers, trials, paywalls, discounts.",
17089
- region: "business_gtm_growth",
17090
- creation_sequence: [
17091
- domainGuideStep(
17092
- "pricing",
17093
- "Revenue",
17094
- "Pricing model",
17095
- "Run the pricing creation sequence: strategy, tiers, discounts, trial, paywall."
17096
- )
17097
- ]
17098
- };
17099
- var BUSINESS_GROWTH_FUNNEL_PLAYBOOK = {
17100
- id: "playbook:business-growth-funnel",
17101
- name: "Growth Funnel (AARRR)",
17102
- version: "0.1.0",
17103
- description: "Map the growth engine using Pirate Metrics: funnels, channels, campaigns, loops, cohorts.",
17104
- region: "business_gtm_growth",
17105
- framework_id: "pirate-metrics-aarrr",
17106
- creation_sequence: [
17107
- domainGuideStep(
17108
- "growth",
17109
- "Growth",
17110
- "Funnel model",
17111
- "Run the growth creation sequence: funnel, channels, campaigns, cohorts."
17112
- )
17113
- ]
17114
- };
17115
- var BUSINESS_MARKETING_PLAYBOOK = {
17116
- id: "playbook:business-marketing",
17117
- name: "Marketing",
17118
- version: "0.1.0",
17119
- description: "Shape the demand engine: positioning, messaging, SEO keywords, campaigns, channels.",
17120
- region: "business_gtm_growth",
17121
- creation_sequence: [
17122
- domainGuideStep(
17123
- "marketing",
17124
- "Marketing",
17125
- "Demand engine",
17126
- "Run the marketing creation sequence: positioning, messaging, SEO keywords, campaigns, channels.",
17127
- { next_sequence_on_gap: "playbook:experience-content" }
17128
- )
17129
- ]
17130
- };
17131
17916
  var BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK = {
17132
17917
  id: "playbook:business-growth-metric-driven",
17133
17918
  name: "Metric-Driven Growth",
@@ -17315,8 +18100,8 @@ var OPERATIONS_QUALITY_PLAYBOOK = {
17315
18100
  seqStep(
17316
18101
  5,
17317
18102
  "Quality Gates",
17318
- ["test_suite", "test_case", "regression_test", "qa_session"],
17319
- "Establish what does not ship until tests pass. Define the test pyramid: unit, integration, end-to-end."
18103
+ ["test_suite", "test_case", "regression_test", "qa_session", "feature", "bug"],
18104
+ "Establish what does not ship until tests pass. Define the test pyramid: unit, integration, end-to-end. Quality is a delivery concern: gates guard the features they cover and the bugs they catch, which is also where incidents trace back (a shipped defect becomes a production incident)."
17320
18105
  ),
17321
18106
  seqStep(
17322
18107
  6,
@@ -17332,21 +18117,6 @@ var OPERATIONS_QUALITY_PLAYBOOK = {
17332
18117
  )
17333
18118
  ]
17334
18119
  };
17335
- var OPERATIONS_TEAM_RITUALS_PLAYBOOK = {
17336
- id: "playbook:operations-team-rituals",
17337
- name: "Team & Rituals",
17338
- version: "0.1.0",
17339
- description: "Capture how the team works: retrospectives, roles, rituals, working agreements, decisions.",
17340
- region: "operations_quality",
17341
- creation_sequence: [
17342
- domainGuideStep(
17343
- "team_org",
17344
- "Team",
17345
- "Team rhythm",
17346
- "Run the team_org creation sequence: retrospectives, roles, rituals, working agreements."
17347
- )
17348
- ]
17349
- };
17350
18120
  var UPG_PLAYBOOKS = [
17351
18121
  // Region 1 - strategy_outcomes
17352
18122
  STRATEGY_OUTCOMES_PLAYBOOK,
@@ -17354,33 +18124,22 @@ var UPG_PLAYBOOKS = [
17354
18124
  USERS_NEEDS_PLAYBOOK,
17355
18125
  // Region 3 - discovery_research_validation
17356
18126
  DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
17357
- DISCOVERY_VALIDATION_HYPOTHESIS_PLAYBOOK,
17358
18127
  // Region 4 - market_competitive
17359
18128
  MARKET_COMPETITIVE_PLAYBOOK,
17360
18129
  // Region 5 - experience_design_brand
17361
18130
  EXPERIENCE_DESIGN_BRAND_PLAYBOOK,
17362
- EXPERIENCE_UX_DOMAIN_ONLY_PLAYBOOK,
17363
- EXPERIENCE_DESIGN_SYSTEM_PLAYBOOK,
17364
- EXPERIENCE_CONTENT_PLAYBOOK,
17365
18131
  // Region 6 - product_delivery
17366
18132
  PRODUCT_DELIVERY_PLAYBOOK,
17367
- PRODUCT_FEEDBACK_SYNTHESIS_PLAYBOOK,
17368
18133
  // Region 7 - engineering_platform
17369
18134
  ENGINEERING_PLATFORM_PLAYBOOK,
17370
- ENGINEERING_ARCHITECTURE_ONLY_PLAYBOOK,
17371
18135
  // Region 8 - business_gtm_growth
17372
18136
  BUSINESS_GTM_GROWTH_PLAYBOOK,
17373
- BUSINESS_MODEL_BMC_PLAYBOOK,
17374
- BUSINESS_PRICING_PLAYBOOK,
17375
- BUSINESS_GROWTH_FUNNEL_PLAYBOOK,
17376
- BUSINESS_MARKETING_PLAYBOOK,
17377
18137
  BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK,
17378
18138
  BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK,
17379
18139
  // Region 9 - analytics_data
17380
18140
  ANALYTICS_DATA_PLAYBOOK,
17381
18141
  // Region 10 - operations_quality
17382
- OPERATIONS_QUALITY_PLAYBOOK,
17383
- OPERATIONS_TEAM_RITUALS_PLAYBOOK
18142
+ OPERATIONS_QUALITY_PLAYBOOK
17384
18143
  ];
17385
18144
 
17386
18145
  // src/step-sequence.ts
@@ -21409,7 +22168,7 @@ var UPG_ANTI_PATTERNS = [
21409
22168
  ]
21410
22169
  },
21411
22170
  why_it_matters: "Without any chain link, every downstream artefact (need, opportunity, feature) loses its anchor. Features end up addressing demographics instead of struggles.",
21412
- remediation: "For each persona, connect it into the user chain via at least one of: `persona_pursues_job`, `persona_experiences_need`, `persona_aspires_to_desired_outcome`, or `persona_incurs_switching_cost`. Use `/upg-persona` or the JTBD canvas workflow.",
22171
+ remediation: "For each persona, connect it into the user chain via at least one of: `persona_pursues_job`, `persona_experiences_need`, `persona_aspires_to_desired_outcome`, or `persona_incurs_switching_cost`. Use `/upg-new-persona` or the JTBD canvas workflow.",
21413
22172
  stages: ["concept", "validation", "build", "beta", "launch", "growth", "mature"],
21414
22173
  severity: "high",
21415
22174
  source: { kind: "practitioner", attribution: "Clayton Christensen, Jobs to Be Done" }
@@ -21549,7 +22308,7 @@ var UPG_ANTI_PATTERNS = [
21549
22308
  ]
21550
22309
  },
21551
22310
  why_it_matters: "OKRs without measurable key results cannot be tracked, debated, or learned from. The graph carries intent but not accountability.",
21552
- remediation: "For each `objective`, define 2\u20134 `key_result` entities and link via `objective_achieved_through_key_result`. Use `/upg-okr` to author.",
22311
+ remediation: "For each `objective`, define 2\u20134 `key_result` entities and link via `objective_achieved_through_key_result`. Use `/upg-new-okr` to author.",
21553
22312
  stages: ["validation", "build", "beta", "launch", "growth", "mature"],
21554
22313
  severity: "high",
21555
22314
  source: { kind: "book", citation: "Measure What Matters, John Doerr (2017)" }
@@ -21609,7 +22368,7 @@ var UPG_ANTI_PATTERNS = [
21609
22368
  }
21610
22369
  },
21611
22370
  why_it_matters: 'A graph with one persona past validation is usually carrying an unexamined "everyone is the same user" assumption.',
21612
- remediation: "Add personas representing the next 1\u20132 most distinct user segments. Use `/upg-persona`.",
22371
+ remediation: "Add personas representing the next 1\u20132 most distinct user segments. Use `/upg-new-persona`.",
21613
22372
  stages: ["validation", "build", "beta", "launch", "growth", "mature"],
21614
22373
  severity: "medium",
21615
22374
  source: { kind: "practitioner", attribution: "Alan Cooper, The Inmates Are Running the Asylum" }
@@ -21627,7 +22386,7 @@ var UPG_ANTI_PATTERNS = [
21627
22386
  ]
21628
22387
  },
21629
22388
  why_it_matters: "Build-only graphs commit the team to delivery without a learning loop. Every shipped feature becomes a permanent assumption.",
21630
- remediation: "Spin up at least one `experiment_plan` or `hypothesis` per quarter's build batch. Use `/upg-discover` or `/upg-hypothesis`.",
22389
+ remediation: "Spin up at least one `experiment_plan` or `hypothesis` per quarter's build batch. Use `/upg-new-discovery` or `/upg-new-hypothesis`.",
21631
22390
  stages: ["build", "beta", "launch", "growth"],
21632
22391
  severity: "high",
21633
22392
  source: { kind: "practitioner", attribution: "Marty Cagan, Inspired (continuous discovery)" }
@@ -21918,19 +22677,31 @@ var REFLECT_MODES = [
21918
22677
  ];
21919
22678
 
21920
22679
  // src/approaches/definitions/index.ts
22680
+ function deriveFrameworkExamples() {
22681
+ const byApproach = {
22682
+ plan: [],
22683
+ inspect: [],
22684
+ prioritise: [],
22685
+ trace: [],
22686
+ reflect: []
22687
+ };
22688
+ for (const fw of UPG_FRAMEWORKS) {
22689
+ for (const approachId of fw.approach_ids ?? []) {
22690
+ if (approachId in byApproach) {
22691
+ byApproach[approachId].push(fw.id);
22692
+ }
22693
+ }
22694
+ }
22695
+ return byApproach;
22696
+ }
22697
+ var FRAMEWORK_EXAMPLES = deriveFrameworkExamples();
21921
22698
  var PLAN = {
21922
22699
  id: "plan",
21923
22700
  label: "Plan",
21924
22701
  description: 'The path of arrival to "what should I build next?". Plan engages a region by surveying its entity coverage against canonical expectations and surfacing the missing scaffolding: the entities a healthy region carries that this graph does not. Cartographic sense: you are walking the coastline of a region and noting where the contour is incomplete, not deciding a strategy. Frameworks like Now/Next/Later, MoSCoW, and Wardley Mapping live within Plan as the named techniques for organising the gap-filling sequence.',
21925
22702
  question_answered: "what should I build next?",
21926
22703
  signature_hint: "({ region?: UPGRegionId }) \u2192 { missing_entities, coverage_score }",
21927
- framework_id_examples: [
21928
- "now-next-later",
21929
- "moscow",
21930
- "wardley-map",
21931
- "okr-framework",
21932
- "three-horizons"
21933
- ]
22704
+ framework_id_examples: FRAMEWORK_EXAMPLES.plan
21934
22705
  };
21935
22706
  var INSPECT = {
21936
22707
  id: "inspect",
@@ -21938,28 +22709,15 @@ var INSPECT = {
21938
22709
  description: 'The path of arrival to "what\'s broken?". Inspect engages a region or a set of entities by running canonical health checks (anti-pattern audits, drift reports, lint passes) and emitting a structured violation list with severity, kind, target entity, description, and fix hint. Cartographic sense: you are surveying the coastline for hazards before approach; the violations are the rocks marked on the chart. The named techniques inside Inspect are the audit catalogues themselves (`UPG_ANTI_PATTERNS` and the lint passes built on the structural rules).',
21939
22710
  question_answered: "what's broken?",
21940
22711
  signature_hint: "({ region?: UPGRegionId, entities?: entity_ids[] }) \u2192 { violations: [{ severity, kind, entity_id, description, fix_hint }] }",
21941
- framework_id_examples: [
21942
- "heuristic-evaluation",
21943
- "tech-debt-tracker",
21944
- "accessibility-maturity-model",
21945
- "cognitive-walkthrough",
21946
- "blameless-postmortem"
21947
- ]
22712
+ framework_id_examples: FRAMEWORK_EXAMPLES.inspect
21948
22713
  };
21949
22714
  var PRIORITISE = {
21950
22715
  id: "prioritise",
21951
22716
  label: "Prioritise",
21952
- description: `The path of arrival to "what's most important?". Prioritise engages an explicit candidate set (entity ids the caller passes in) and ranks it by an explicit framework: RICE, ICE, Kano, Cost of Delay. The framework_id is required because prioritisation without a declared scoring lens is incoherent. Cartographic sense: you have a set of charted destinations and you are computing the order of arrival from a chosen vantage. Different frameworks weight the same candidate set differently; the approach delegates the actual ranking math to the named technique (the framework definition).`,
22717
+ description: `The path of arrival to "what's most important?". Prioritise engages an explicit candidate set (entity ids the caller passes in) and ranks it by an explicit framework: RICE, Kano, MoSCoW. The framework_id is required because prioritisation without a declared scoring lens is incoherent. Cartographic sense: you have a set of charted destinations and you are computing the order of arrival from a chosen vantage. Different frameworks weight the same candidate set differently; the approach delegates the actual ranking math to the named technique (the framework definition).`,
21953
22718
  question_answered: "what's most important?",
21954
22719
  signature_hint: "({ candidates: entity_ids[], framework_id }) \u2192 { ranked: [{ entity_id, score, rationale }], framework_used }",
21955
- framework_id_examples: [
21956
- "rice-scoring",
21957
- "ice-scoring",
21958
- "kano-model",
21959
- "cost-of-delay",
21960
- "moscow",
21961
- "wsjf"
21962
- ]
22720
+ framework_id_examples: FRAMEWORK_EXAMPLES.prioritise
21963
22721
  };
21964
22722
  var TRACE = {
21965
22723
  id: "trace",
@@ -21967,34 +22725,15 @@ var TRACE = {
21967
22725
  description: 'The path of arrival to "walk a meaningful path through existing graph". Trace engages an anchor entity and follows a path expressed as a UPGEntityType[] shorthand. Example: `["persona", "job", "feature"]` walks persona\u2192job\u2192feature using the canonical edge for each pair (resolved via `resolve_edge_for_pair`). An optional `edges_override` array selects non-canonical edges per hop when a pair has multiple resolutions. Cartographic sense: you are tracing a route across charted terrain; anchor is the departure, path is the heading sequence, the canonical edges are the roads. No DSL invented; the shorthand IS the path expression.',
21968
22726
  question_answered: "walk a meaningful path through existing graph",
21969
22727
  signature_hint: "({ anchor: entity_id, path: UPGEntityType[], edges_override?: (string | null)[] }) \u2192 { trail: [{ depth, entity_id, edge_type_in }], reached: entity_id[] }",
21970
- framework_id_examples: [
21971
- "opportunity-solution-tree",
21972
- "strategic-cascade",
21973
- "metrics-tree",
21974
- "user-journey-map",
21975
- "impact-map",
21976
- "dependency-map"
21977
- ]
22728
+ framework_id_examples: FRAMEWORK_EXAMPLES.trace
21978
22729
  };
21979
22730
  var REFLECT = {
21980
22731
  id: "reflect",
21981
22732
  label: "Reflect",
21982
- description: 'The path of arrival to "what should I be questioning?". Reflect engages an optional scope (region, entity, or `null` for the whole graph) and emits structured prompts a thinker should consider: assumptions to test, alternatives to weigh, blind-spots to surface, load-bearing claims to verify. Mode is optional; absence is open reflection. Cartographic sense: before approaching the coastline, you are asking which features of your chart you have not actually verified; the prompts mark the parts of the map that may be conjecture. Five Whys, Pre-mortem, Red Team, and Devil\'s Advocate are the named techniques inside this approach.',
22733
+ description: 'The path of arrival to "what should I be questioning?". Reflect engages an optional scope (region, entity, or `null` for the whole graph) and emits structured prompts a thinker should consider: assumptions to test, alternatives to weigh, blind-spots to surface, load-bearing claims to verify. Mode is optional; absence is open reflection. Cartographic sense: before approaching the coastline, you are asking which features of your chart you have not actually verified; the prompts mark the parts of the map that may be conjecture. Retrospective and Build-Measure-Learn are the named reflective techniques in the canonical surface.',
21983
22734
  question_answered: "what should I be questioning?",
21984
22735
  signature_hint: "({ scope?: UPGRegionId | entity_id | null, mode?: 'assumptions' | 'alternatives' | 'blind-spots' | 'load-bearing' }) \u2192 { prompts: [{ kind, question, target_entities? }] }",
21985
- framework_id_examples: [
21986
- // Reflection classics: the five canonical reflect frameworks.
21987
- "five-whys",
21988
- "pre-mortem",
21989
- "red-team",
21990
- "devils-advocate",
21991
- "second-order-thinking",
21992
- // Reflective ceremonies + reflective JTBD lens already in the catalog.
21993
- "retrospective",
21994
- "four-forces-of-progress",
21995
- "assumption-canvas",
21996
- "win-loss-analysis"
21997
- ]
22736
+ framework_id_examples: FRAMEWORK_EXAMPLES.reflect
21998
22737
  };
21999
22738
  var UPG_APPROACHES = [PLAN, INSPECT, PRIORITISE, TRACE, REFLECT];
22000
22739
  var UPG_APPROACHES_BY_ID = Object.fromEntries(
@@ -24191,7 +24930,7 @@ function isCanonical(text) {
24191
24930
  }
24192
24931
 
24193
24932
  // src/index.ts
24194
- var UPG_VERSION = "0.8.0";
24933
+ var UPG_VERSION = "0.8.2";
24195
24934
  var UPG_FORMAT_VERSION = "0.4.0";
24196
24935
  var MARKDOWN_FORMAT_VERSION = "0.1";
24197
24936
  var UPG_TYPES = getTypes();
@@ -24257,28 +24996,17 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
24257
24996
  // Annotate the CommonJS export names for ESM import in node:
24258
24997
  0 && (module.exports = {
24259
24998
  ANALYTICS_DATA_PLAYBOOK,
24260
- BUSINESS_GROWTH_FUNNEL_PLAYBOOK,
24261
24999
  BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK,
24262
25000
  BUSINESS_GTM_GROWTH_PLAYBOOK,
24263
25001
  BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK,
24264
- BUSINESS_MARKETING_PLAYBOOK,
24265
- BUSINESS_MODEL_BMC_PLAYBOOK,
24266
- BUSINESS_PRICING_PLAYBOOK,
24267
25002
  DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
24268
- DISCOVERY_VALIDATION_HYPOTHESIS_PLAYBOOK,
24269
- ENGINEERING_ARCHITECTURE_ONLY_PLAYBOOK,
24270
25003
  ENGINEERING_PLATFORM_PLAYBOOK,
24271
- EXPERIENCE_CONTENT_PLAYBOOK,
24272
25004
  EXPERIENCE_DESIGN_BRAND_PLAYBOOK,
24273
- EXPERIENCE_DESIGN_SYSTEM_PLAYBOOK,
24274
- EXPERIENCE_UX_DOMAIN_ONLY_PLAYBOOK,
24275
25005
  LEGACY_PRODUCT_STAGES,
24276
25006
  MARKDOWN_FORMAT_VERSION,
24277
25007
  MARKET_COMPETITIVE_PLAYBOOK,
24278
25008
  OPERATIONS_QUALITY_PLAYBOOK,
24279
- OPERATIONS_TEAM_RITUALS_PLAYBOOK,
24280
25009
  PRODUCT_DELIVERY_PLAYBOOK,
24281
- PRODUCT_FEEDBACK_SYNTHESIS_PLAYBOOK,
24282
25010
  PROPERTY_SCALE_MAP,
24283
25011
  REFLECT_MODES,
24284
25012
  STRATEGY_OUTCOMES_PLAYBOOK,