@unified-product-graph/core 0.12.5 → 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.d.cts CHANGED
@@ -21834,7 +21834,7 @@ declare function isCanonical(text: string): boolean;
21834
21834
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21835
21835
  * The `check:version-lockstep` gate enforces this at release time.
21836
21836
  */
21837
- declare const UPG_VERSION: "0.12.5";
21837
+ declare const UPG_VERSION: "0.12.6";
21838
21838
  /**
21839
21839
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21840
21840
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.d.ts CHANGED
@@ -21834,7 +21834,7 @@ declare function isCanonical(text: string): boolean;
21834
21834
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21835
21835
  * The `check:version-lockstep` gate enforces this at release time.
21836
21836
  */
21837
- declare const UPG_VERSION: "0.12.5";
21837
+ declare const UPG_VERSION: "0.12.6";
21838
21838
  /**
21839
21839
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21840
21840
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.js CHANGED
@@ -578,7 +578,7 @@ var UPG_ENTITY_META = [
578
578
  // (method / success_criteria / sample_size) when `test_plan` re-homed to the
579
579
  // QA/testing domain (UPG-678).
580
580
  { name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
581
- { name: "experiment_run", type_id: "ent_341", maturity: "proposed", since: "0.2.6" },
581
+ { name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
582
582
  { name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
583
583
  // test_plan re-homed validation → testing/QA (UPG-678). It is the QA
584
584
  // verification-procedure plan (test scope / environments / pass criteria);
@@ -666,7 +666,7 @@ var UPG_ENTITY_META = [
666
666
  // asserts `proposed` as the post-re-canon invariant. Graduating here would
667
667
  // break that contract; promotion is a separate, ticketed decision once the
668
668
  // story_statement → user_story migration has fully aged out.
669
- { name: "user_story", type_id: "ent_073", maturity: "proposed", since: "0.1.0" },
669
+ { name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
670
670
  { name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
671
671
  { name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
672
672
  { name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
@@ -955,8 +955,9 @@ var UPG_ENTITY_META = [
955
955
  { name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" }
956
956
  ];
957
957
  var DEFERRED_PROPOSED_BY_CONTRACT = {
958
- user_story: "UPG-571: frozen proposed by the v0.7.0 re-canon contract (story_statement to user_story); user-story-split.test.ts asserts the invariant.",
959
- experiment_run: "UPG-664: the optional multi-run / replication child; experiment_plan graduated to stable, the run stays proposed.",
958
+ // user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
959
+ // 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
960
+ // are settled; they are now stable, not deferred.
960
961
  ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
961
962
  ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
962
963
  ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
@@ -3401,7 +3402,20 @@ var UPG_VALID_CHILDREN = {
3401
3402
  // ── OKR hierarchy ──────────────────────────────────────────────────────────
3402
3403
  objective: ["key_result", "metric"],
3403
3404
  key_result: ["metric"],
3404
- // ── Strategic cascade: vision → mission → strategic_pillar → … ─────────────
3405
+ // ── Strategic cascade: vision → mission → strategic_pillar → strategic_theme →
3406
+ // { initiative, objective } ───────────────────────────────────────────────
3407
+ //
3408
+ // strategic_pillar vs strategic_theme (UPG-692 T3.3 — distinct cascade levels,
3409
+ // NOT duplicates; sharpened rather than merged):
3410
+ // - strategic_pillar = a DURABLE structural division of the strategy. A
3411
+ // standing area the org organises around for years (e.g. "Structured
3412
+ // content", "Developer experience"). Few, long-lived; time_horizon is
3413
+ // multi-year / open-ended; carries its own `success_indicator`.
3414
+ // - strategic_theme = a TIME-BOUND thrust WITHIN a pillar. The current bet
3415
+ // for a period (e.g. "Go AI-native this year"). More numerous, rotates;
3416
+ // time_horizon is bounded (Q / FY); has NO `success_indicator` because it
3417
+ // is measured through its child objectives (strategic_theme_contains_objective).
3418
+ // That success-measurement asymmetry is the load-bearing distinction.
3405
3419
  vision: ["mission"],
3406
3420
  mission: ["strategic_pillar"],
3407
3421
  strategic_pillar: ["strategic_theme", "capability", "value_stream", "decision"],
@@ -12541,16 +12555,18 @@ var UPG_PROPERTY_SCHEMA = {
12541
12555
  // StrategicPillarProperties: StrategicPillar entity. Durable multi-year direction the product commits to.
12542
12556
  strategic_pillar: {
12543
12557
  owner: { type: "string", description: "Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
12544
- description: { type: "string", description: "Narrative of the pillar's intent" },
12545
- scope: { type: "string", description: "What this pillar covers" },
12546
- time_horizon: { type: "string", description: 'Planning horizon. Typically multi-year. @example "3 years", "2026-2028"' },
12547
- success_indicator: { type: "string", description: "How the business knows the pillar is on track. Narrative, not a metric edge." }
12548
- },
12549
- // StrategicThemeProperties: StrategicTheme entity.
12558
+ description: { type: "string", description: "Narrative of the pillar's intent as a durable strategic area" },
12559
+ scope: { type: "string", description: "The standing organisational area this pillar owns" },
12560
+ time_horizon: { type: "string", description: 'Standing / multi-year horizon, often open-ended (a pillar is durable). @example "3 years", "2026-2028", "ongoing"' },
12561
+ 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." }
12562
+ },
12563
+ // StrategicThemeProperties: StrategicTheme entity. A time-bound thrust WITHIN a
12564
+ // strategic_pillar (distinct cascade level, UPG-692 T3.3) — measured through its
12565
+ // child objectives, so it carries no success_indicator of its own.
12550
12566
  strategic_theme: {
12551
12567
  owner: { type: "string", description: "Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
12552
- time_horizon: { type: "string", description: 'Planning horizon. @example "Q1 2026", "FY26"' },
12553
- description: { type: "string", description: "Short narrative of what the theme is about" },
12568
+ time_horizon: { type: "string", description: 'Bounded period this theme is active (a theme is time-bound, within a pillar). @example "Q1 2026", "FY26"' },
12569
+ description: { type: "string", description: "Short narrative of this time-bound thrust within its pillar" },
12554
12570
  scope: { type: "string", description: "What the theme explicitly includes or excludes" }
12555
12571
  },
12556
12572
  // SubscriptionProperties: Subscription.
@@ -29222,7 +29238,7 @@ function isCanonical(text) {
29222
29238
  }
29223
29239
 
29224
29240
  // src/index.ts
29225
- var UPG_VERSION = "0.12.5";
29241
+ var UPG_VERSION = "0.12.6";
29226
29242
  var UPG_FORMAT_VERSION = "0.4.0";
29227
29243
  var MARKDOWN_FORMAT_VERSION = "0.1";
29228
29244
  var UPG_TYPES = getTypes();