@unified-product-graph/core 0.12.4 → 0.12.6
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 +39 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -5
- package/dist/index.d.ts +17 -5
- package/dist/index.js +38 -13
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -27,6 +27,7 @@ __export(index_exports, {
|
|
|
27
27
|
CLASSIFICATION_EDGE_PROPERTY_SCHEMA: () => CLASSIFICATION_EDGE_PROPERTY_SCHEMA,
|
|
28
28
|
CONTENT_DEPTH_WARNING_RULES: () => CONTENT_DEPTH_WARNING_RULES,
|
|
29
29
|
DEFAULT_ENTITY_EMOJI: () => DEFAULT_ENTITY_EMOJI,
|
|
30
|
+
DEFERRED_PROPOSED_BY_CONTRACT: () => DEFERRED_PROPOSED_BY_CONTRACT,
|
|
30
31
|
DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK: () => DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
|
|
31
32
|
ENGINEERING_PLATFORM_PLAYBOOK: () => ENGINEERING_PLATFORM_PLAYBOOK,
|
|
32
33
|
ENTITY_EMOJI: () => ENTITY_EMOJI,
|
|
@@ -792,7 +793,7 @@ var UPG_ENTITY_META = [
|
|
|
792
793
|
// (method / success_criteria / sample_size) when `test_plan` re-homed to the
|
|
793
794
|
// QA/testing domain (UPG-678).
|
|
794
795
|
{ name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
|
|
795
|
-
{ name: "experiment_run", type_id: "ent_341", maturity: "
|
|
796
|
+
{ name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
|
|
796
797
|
{ name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
|
|
797
798
|
// test_plan re-homed validation → testing/QA (UPG-678). It is the QA
|
|
798
799
|
// verification-procedure plan (test scope / environments / pass criteria);
|
|
@@ -880,7 +881,7 @@ var UPG_ENTITY_META = [
|
|
|
880
881
|
// asserts `proposed` as the post-re-canon invariant. Graduating here would
|
|
881
882
|
// break that contract; promotion is a separate, ticketed decision once the
|
|
882
883
|
// story_statement → user_story migration has fully aged out.
|
|
883
|
-
{ name: "user_story", type_id: "ent_073", maturity: "
|
|
884
|
+
{ name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
|
|
884
885
|
{ name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
|
|
885
886
|
{ name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
|
|
886
887
|
{ name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
|
|
@@ -1168,6 +1169,14 @@ var UPG_ENTITY_META = [
|
|
|
1168
1169
|
{ name: "workspace", type_id: "ent_328", maturity: "proposed", since: "0.2.0" },
|
|
1169
1170
|
{ name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" }
|
|
1170
1171
|
];
|
|
1172
|
+
var DEFERRED_PROPOSED_BY_CONTRACT = {
|
|
1173
|
+
// user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
|
|
1174
|
+
// 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
|
|
1175
|
+
// are settled; they are now stable, not deferred.
|
|
1176
|
+
ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
1177
|
+
ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
1178
|
+
ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
|
|
1179
|
+
};
|
|
1171
1180
|
var UPG_ENTITY_META_BY_NAME = new Map(
|
|
1172
1181
|
UPG_ENTITY_META.map((m) => [m.name, m])
|
|
1173
1182
|
);
|
|
@@ -3338,7 +3347,8 @@ var UPG_CROSS_EDGE_TYPES = [
|
|
|
3338
3347
|
"competitor_signal_surfaces_opportunity",
|
|
3339
3348
|
"competitor_classified_as_classification_value",
|
|
3340
3349
|
"node_classified_as_classification_value",
|
|
3341
|
-
"journey_phase_realises_operating_stage"
|
|
3350
|
+
"journey_phase_realises_operating_stage",
|
|
3351
|
+
"screen_markets_product"
|
|
3342
3352
|
];
|
|
3343
3353
|
var REGISTRY_PRODUCT_ID = "registry";
|
|
3344
3354
|
|
|
@@ -3607,7 +3617,20 @@ var UPG_VALID_CHILDREN = {
|
|
|
3607
3617
|
// ── OKR hierarchy ──────────────────────────────────────────────────────────
|
|
3608
3618
|
objective: ["key_result", "metric"],
|
|
3609
3619
|
key_result: ["metric"],
|
|
3610
|
-
// ── Strategic cascade: vision → mission → strategic_pillar →
|
|
3620
|
+
// ── Strategic cascade: vision → mission → strategic_pillar → strategic_theme →
|
|
3621
|
+
// { initiative, objective } ───────────────────────────────────────────────
|
|
3622
|
+
//
|
|
3623
|
+
// strategic_pillar vs strategic_theme (UPG-692 T3.3 — distinct cascade levels,
|
|
3624
|
+
// NOT duplicates; sharpened rather than merged):
|
|
3625
|
+
// - strategic_pillar = a DURABLE structural division of the strategy. A
|
|
3626
|
+
// standing area the org organises around for years (e.g. "Structured
|
|
3627
|
+
// content", "Developer experience"). Few, long-lived; time_horizon is
|
|
3628
|
+
// multi-year / open-ended; carries its own `success_indicator`.
|
|
3629
|
+
// - strategic_theme = a TIME-BOUND thrust WITHIN a pillar. The current bet
|
|
3630
|
+
// for a period (e.g. "Go AI-native this year"). More numerous, rotates;
|
|
3631
|
+
// time_horizon is bounded (Q / FY); has NO `success_indicator` because it
|
|
3632
|
+
// is measured through its child objectives (strategic_theme_contains_objective).
|
|
3633
|
+
// That success-measurement asymmetry is the load-bearing distinction.
|
|
3611
3634
|
vision: ["mission"],
|
|
3612
3635
|
mission: ["strategic_pillar"],
|
|
3613
3636
|
strategic_pillar: ["strategic_theme", "capability", "value_stream", "decision"],
|
|
@@ -12747,16 +12770,18 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12747
12770
|
// StrategicPillarProperties: StrategicPillar entity. Durable multi-year direction the product commits to.
|
|
12748
12771
|
strategic_pillar: {
|
|
12749
12772
|
owner: { type: "string", description: "Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
12750
|
-
description: { type: "string", description: "Narrative of the pillar's intent" },
|
|
12751
|
-
scope: { type: "string", description: "
|
|
12752
|
-
time_horizon: { type: "string", description: '
|
|
12753
|
-
success_indicator: { type: "string", description: "How the business knows
|
|
12754
|
-
},
|
|
12755
|
-
// StrategicThemeProperties: StrategicTheme entity.
|
|
12773
|
+
description: { type: "string", description: "Narrative of the pillar's intent as a durable strategic area" },
|
|
12774
|
+
scope: { type: "string", description: "The standing organisational area this pillar owns" },
|
|
12775
|
+
time_horizon: { type: "string", description: 'Standing / multi-year horizon, often open-ended (a pillar is durable). @example "3 years", "2026-2028", "ongoing"' },
|
|
12776
|
+
success_indicator: { type: "string", description: "How the business knows this durable pillar is on track. Narrative, not a metric edge. A strategic_theme deliberately has no success_indicator: it is measured through its child objectives, not on its own." }
|
|
12777
|
+
},
|
|
12778
|
+
// StrategicThemeProperties: StrategicTheme entity. A time-bound thrust WITHIN a
|
|
12779
|
+
// strategic_pillar (distinct cascade level, UPG-692 T3.3) — measured through its
|
|
12780
|
+
// child objectives, so it carries no success_indicator of its own.
|
|
12756
12781
|
strategic_theme: {
|
|
12757
12782
|
owner: { type: "string", description: "Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
12758
|
-
time_horizon: { type: "string", description: '
|
|
12759
|
-
description: { type: "string", description: "Short narrative of
|
|
12783
|
+
time_horizon: { type: "string", description: 'Bounded period this theme is active (a theme is time-bound, within a pillar). @example "Q1 2026", "FY26"' },
|
|
12784
|
+
description: { type: "string", description: "Short narrative of this time-bound thrust within its pillar" },
|
|
12760
12785
|
scope: { type: "string", description: "What the theme explicitly includes or excludes" }
|
|
12761
12786
|
},
|
|
12762
12787
|
// SubscriptionProperties: Subscription.
|
|
@@ -29428,7 +29453,7 @@ function isCanonical(text) {
|
|
|
29428
29453
|
}
|
|
29429
29454
|
|
|
29430
29455
|
// src/index.ts
|
|
29431
|
-
var UPG_VERSION = "0.12.
|
|
29456
|
+
var UPG_VERSION = "0.12.6";
|
|
29432
29457
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
29433
29458
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
29434
29459
|
var UPG_TYPES = getTypes();
|
|
@@ -29500,6 +29525,7 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
29500
29525
|
CLASSIFICATION_EDGE_PROPERTY_SCHEMA,
|
|
29501
29526
|
CONTENT_DEPTH_WARNING_RULES,
|
|
29502
29527
|
DEFAULT_ENTITY_EMOJI,
|
|
29528
|
+
DEFERRED_PROPOSED_BY_CONTRACT,
|
|
29503
29529
|
DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK,
|
|
29504
29530
|
ENGINEERING_PLATFORM_PLAYBOOK,
|
|
29505
29531
|
ENTITY_EMOJI,
|