@unified-product-graph/core 0.13.2 → 0.14.0

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
@@ -7605,6 +7605,53 @@ function getDeprecatedTypes() {
7605
7605
  return deprecated;
7606
7606
  }
7607
7607
  var UPG_PROPERTY_MIGRATIONS = {
7608
+ // ── v0.14.0: Pattern E — remove deprecated/ghost properties (UPG-574) ────────
7609
+ //
7610
+ // Properties marked deprecated (some "Removed in 0.9.1") that were never
7611
+ // actually removed, plus superseded soft-aliases. The RICE / opportunity-sizing
7612
+ // scoring inputs were framework-scoped from 0.9.0: their value lives on the
7613
+ // `framework_exercise` includes-edge of the rice-scoring / opportunity-sizing
7614
+ // framework, not on the entity. The remaining four are superseded by a sibling
7615
+ // (cause_category, rule_strength, size_estimate, effort). Loaders drop the
7616
+ // stranded keys; the values were never canonical on the entity.
7617
+ "0.14.0": [
7618
+ {
7619
+ kind: "drop_props",
7620
+ type: "opportunity",
7621
+ drop_props: ["reach", "frequency", "pain", "opportunity_score"],
7622
+ reason: "UPG-574: opportunity scoring (reach/frequency/pain/opportunity_score) was framework-scoped from 0.9.0 (opportunity-sizing). Apply the framework and read the value off the framework_exercise edge; the entity props are removed in 0.14.0."
7623
+ },
7624
+ {
7625
+ kind: "drop_props",
7626
+ type: "solution",
7627
+ drop_props: ["reach", "impact", "confidence", "effort", "rice_score"],
7628
+ reason: "UPG-574: RICE inputs (reach/impact/confidence/effort) and the computed rice_score were framework-scoped from 0.9.0 (rice-scoring). Apply the framework and read the score off the framework_exercise edge; the entity props are removed in 0.14.0."
7629
+ },
7630
+ {
7631
+ kind: "drop_props",
7632
+ type: "root_cause",
7633
+ drop_props: ["category", "verified"],
7634
+ reason: "UPG-574: root_cause.category was a legacy free-form field superseded by the closed-enum cause_category; verified duplicated cause_confidence === confirmed. Both removed in 0.14.0."
7635
+ },
7636
+ {
7637
+ kind: "drop_props",
7638
+ type: "design_guideline",
7639
+ drop_props: ["strictness"],
7640
+ reason: "UPG-574: design_guideline.strictness was superseded by rule_strength (a richer imperative-force enum). Removed in 0.14.0."
7641
+ },
7642
+ {
7643
+ kind: "drop_props",
7644
+ type: "behavioral_segment",
7645
+ drop_props: ["size"],
7646
+ reason: "UPG-574: behavioral_segment.size was a v0.2 alias for size_estimate. Removed in 0.14.0; use size_estimate."
7647
+ },
7648
+ {
7649
+ kind: "drop_props",
7650
+ type: "task",
7651
+ drop_props: ["estimate"],
7652
+ reason: "UPG-574: task.estimate was a story_task-collapse relic that duplicated effort. Removed in 0.14.0; use effort."
7653
+ }
7654
+ ],
7608
7655
  // ── v0.12.0: P14 Bucket C — drop the one non-derived denormalized aggregate ──
7609
7656
  //
7610
7657
  // The count caches (feature_count, evidence_count, workflow step_count /
@@ -10284,8 +10331,7 @@ var UPG_PROPERTY_SCHEMA = {
10284
10331
  source: { type: "string", enum: ["clickstream", "survey", "interview", "mixed", "inferred", "imported"], description: "Membership data source. Drives confidence weighting and refresh policy." },
10285
10332
  included_behaviors: { type: "string[]", description: "Qualifying behaviours (positive criteria, free-text labels)" },
10286
10333
  excluded_behaviors: { type: "string[]", description: "Excluding behaviours (negative criteria, free-text labels)" },
10287
- size_estimate: { type: "number", description: "Estimated current size. Snapshot value." },
10288
- size: { type: "number", description: "Size. Alias retained for the v0.2 baseline." },
10334
+ size_estimate: { type: "number", description: "Estimated current size. Snapshot value. (`size`, the v0.2 alias, removed in 0.14.0, UPG-574.)" },
10289
10335
  validity_period_start: { type: "string", description: "ISO start of the validity window. Behavioural definitions decay; outside the window the snapshot should be re-computed." },
10290
10336
  validity_period_end: { type: "string", description: "End of the window over which the segment definition is considered valid (ISO format)" }
10291
10337
  },
@@ -10902,8 +10948,7 @@ var UPG_PROPERTY_SCHEMA = {
10902
10948
  guideline_category: { type: "string", enum: ["spacing", "color", "typography", "layout", "interaction", "content"], description: "Category covered" },
10903
10949
  applies_to: { type: "string", description: "Applicable elements or contexts" },
10904
10950
  rationale: { type: "string", description: "Reasoning. Why this rule exists." },
10905
- rule_strength: { type: "string", enum: ["must", "must_not", "exception", "warning", "guideline"], description: "Imperative force. Supersedes `strictness`." },
10906
- strictness: { type: "string", enum: ["must", "should", "may"], description: "RFC-2119-flavoured binding strength" },
10951
+ rule_strength: { type: "string", enum: ["must", "must_not", "exception", "warning", "guideline"], description: "Imperative force. (Superseded the removed `strictness` field in 0.14.0, UPG-574.)" },
10907
10952
  exception_policy: { type: "string", description: "Exception request or documentation process" }
10908
10953
  },
10909
10954
  // DesignPatternProperties: Reusable design pattern.
@@ -12030,46 +12075,11 @@ var UPG_PROPERTY_SCHEMA = {
12030
12075
  rotation_cadence: { type: "string", enum: ["daily", "weekly", "biweekly", "custom"], description: "Cycle cadence. `weekly` for standard team rotations. `daily` for high-incident-volume teams." },
12031
12076
  handoff_time: { type: "string", description: 'Shift handoff time. Affects team coordination and sleep. @example "09:00 UTC", "17:00 local"' }
12032
12077
  },
12033
- // OpportunityProperties: A problem worth solving, grounded in user need and business value
12034
- opportunity: {
12035
- reach: {
12036
- type: "assessment",
12037
- scale_id: "reach_5",
12038
- description: "How many users experience this problem. @deprecated 0.9.0:a framework-scoped scoring input, not an intrinsic property. Apply the `opportunity-sizing` framework; the value lives on the framework_exercise includes-edge. Removed in 0.9.1.",
12039
- properties: {
12040
- value: { type: "number", description: "The numeric value, used for computation." },
12041
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12042
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12043
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12044
- },
12045
- required: ["value", "label"]
12046
- },
12047
- frequency: {
12048
- type: "assessment",
12049
- scale_id: "frequency_5",
12050
- description: "How often users experience this problem. @deprecated 0.9.0:framework-scoped (opportunity-sizing). Removed in 0.9.1.",
12051
- properties: {
12052
- value: { type: "number", description: "The numeric value, used for computation." },
12053
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12054
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12055
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12056
- },
12057
- required: ["value", "label"]
12058
- },
12059
- pain: {
12060
- type: "assessment",
12061
- scale_id: "pain_5",
12062
- description: "How painful it is when unaddressed. @deprecated 0.9.0:framework-scoped (opportunity-sizing). Removed in 0.9.1.",
12063
- properties: {
12064
- value: { type: "number", description: "The numeric value, used for computation." },
12065
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12066
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12067
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12068
- },
12069
- required: ["value", "label"]
12070
- },
12071
- opportunity_score: { type: "number", description: "Computed: normalized_reach x normalized_frequency x normalized_pain (0-1). @deprecated 0.9.0:computed by the `opportunity-sizing` framework on its application edge, not stored on the entity. Removed in 0.9.1." }
12072
- },
12078
+ // OpportunityProperties: A problem worth solving, grounded in user need and business value.
12079
+ // No intrinsic scalar properties — defined by edges + framework-scoped scoring
12080
+ // (reach/frequency/pain/opportunity_score live on the `opportunity-sizing`
12081
+ // framework_exercise edge). Former props removed in 0.14.0 (UPG-574).
12082
+ opportunity: {},
12073
12083
  // OrganizationProperties: Organization entity.
12074
12084
  organization: {
12075
12085
  logo_url: { type: "string", description: "URL of the organisation's logo" },
@@ -12529,9 +12539,8 @@ var UPG_PROPERTY_SCHEMA = {
12529
12539
  cause_category: { type: "string", enum: ["code", "config", "process", "dependency", "data", "infrastructure", "human_error", "other"], description: "Closed-enum cause category for RCA reporting and dashboards. Distinct from the legacy free-form `category`." },
12530
12540
  cause_confidence: { type: "string", enum: ["hypothesised", "likely", "confirmed"], description: "Team certainty about this cause. `hypothesised` = educated guess. `likely` = evidence points here. `confirmed` = reproduced. Renamed from `confidence` in v0.4.0 to disambiguate from the entity-wide `UPGAssessment`-typed epistemic confidence used elsewhere. The 3-tier shape stays as a discrete RCA-lifecycle marker." },
12531
12541
  evidence_summary: { type: "string", description: "One-paragraph evidence summary. Log lines, traces, repro steps. Detailed artefacts go on linked `evidence` nodes." },
12532
- category: { type: "string", enum: ["architecture", "design", "data", "infrastructure", "process", "dependency", "other"], description: "Legacy free-form category. Retained for v0.2 baseline; new graphs prefer `cause_category`." },
12533
- affected_area: { type: "string", description: "Affected area of the system" },
12534
- verified: { type: "boolean", description: "Verified through investigation" }
12542
+ affected_area: { type: "string", description: "Affected area of the system" }
12543
+ // `category` (legacy, -> `cause_category`) and `verified` (= `cause_confidence === 'confirmed'`) removed in 0.14.0 (UPG-574).
12535
12544
  },
12536
12545
  // RunbookProperties: Runbook.
12537
12546
  runbook: {
@@ -12684,58 +12693,12 @@ var UPG_PROPERTY_SCHEMA = {
12684
12693
  post_type: { type: "string", enum: ["text", "image", "video", "carousel", "story"], description: "Format of the post" },
12685
12694
  scheduled_date: { type: "string", description: "Date the post is scheduled to publish (ISO format)" }
12686
12695
  },
12687
- // SolutionProperties: A proposed response to an opportunity
12696
+ // SolutionProperties: A proposed response to an opportunity.
12697
+ // RICE scoring inputs (reach/impact/confidence/effort) + computed rice_score
12698
+ // were framework-scoped from 0.9.0 and removed in 0.14.0 (UPG-574): they live
12699
+ // on the `rice-scoring` framework_exercise edge, not the entity.
12688
12700
  solution: {
12689
- timeline: { type: "string", description: "Estimated delivery or target timeline" },
12690
- reach: {
12691
- type: "assessment",
12692
- scale_id: "reach_5",
12693
- description: "How many users this solution reaches (1 = few, 5 = most). @deprecated 0.9.0:a framework-scoped scoring input, not an intrinsic property. Apply the `rice-scoring` framework; the value lives on the framework_exercise includes-edge. Removed in 0.9.1.",
12694
- properties: {
12695
- value: { type: "number", description: "The numeric value, used for computation." },
12696
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12697
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12698
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12699
- },
12700
- required: ["value", "label"]
12701
- },
12702
- impact: {
12703
- type: "assessment",
12704
- scale_id: "impact_5",
12705
- description: "Expected impact on the target outcome (1 = minimal, 5 = transformative). @deprecated 0.9.0:framework-scoped (rice-scoring). Removed in 0.9.1.",
12706
- properties: {
12707
- value: { type: "number", description: "The numeric value, used for computation." },
12708
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12709
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12710
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12711
- },
12712
- required: ["value", "label"]
12713
- },
12714
- confidence: {
12715
- type: "assessment",
12716
- scale_id: "confidence_5",
12717
- description: "How confident the team is in this solution (1 = speculative, 5 = proven). @deprecated 0.9.0:framework-scoped (rice-scoring). Removed in 0.9.1.",
12718
- properties: {
12719
- value: { type: "number", description: "The numeric value, used for computation." },
12720
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12721
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12722
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12723
- },
12724
- required: ["value", "label"]
12725
- },
12726
- effort: {
12727
- type: "assessment",
12728
- scale_id: "effort_5",
12729
- description: "Level of effort required to implement (1 = trivial, 5 = very large). @deprecated 0.9.0:effort is a framework-scoped scoring input (it varies by assessor and method), not an intrinsic property. Removed in 0.9.1.",
12730
- properties: {
12731
- value: { type: "number", description: "The numeric value, used for computation." },
12732
- label: { type: "string", description: "The qualitative label (what the assessor meant)." },
12733
- scale_id: { type: "string", description: "Which assessment scale this was rated on (optional)." },
12734
- normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
12735
- },
12736
- required: ["value", "label"]
12737
- },
12738
- rice_score: { type: "number", description: "Computed: (reach \xD7 impact \xD7 confidence) / effort. @deprecated 0.9.0:computed by the `rice-scoring` framework on its application edge, not stored on the entity. Removed in 0.9.1." }
12701
+ timeline: { type: "string", description: "Estimated delivery or target timeline" }
12739
12702
  },
12740
12703
  // SpecificationProperties: A governed specification: a query language, protocol, data format, encoding,
12741
12704
  specification: {
@@ -12893,8 +12856,8 @@ var UPG_PROPERTY_SCHEMA = {
12893
12856
  effort: { type: "string", description: 'Effort estimate (e.g. "2h", "1d", "3 points"). Use a consistent unit within your team.' },
12894
12857
  priority: { type: "string", enum: ["urgent", "high", "medium", "low", "none"], description: "Relative importance against other tasks" },
12895
12858
  due_date: { type: "string", description: "ISO date due. Typically bounded by the containing story's due date." },
12896
- labels: { type: "string[]", description: "Free-form classification tags. Applied uniformly across work item types." },
12897
- estimate: { type: "string", description: 'Story-point or sizing estimate. String to support fibonacci, t-shirt sizes, or custom scales (e.g. "5", "M", "3 pts"). Absorbed from `StoryTaskProperties` when `story_task` collapsed into `task` (v0.4.0).' }
12859
+ labels: { type: "string[]", description: "Free-form classification tags. Applied uniformly across work item types." }
12860
+ // `estimate` (story_task collapse relic, duplicated `effort`) removed in 0.14.0 (UPG-574).
12898
12861
  },
12899
12862
  // TeamProperties: Team entity.
12900
12863
  team: {
@@ -29544,7 +29507,7 @@ function isCanonical(text) {
29544
29507
  }
29545
29508
 
29546
29509
  // src/index.ts
29547
- var UPG_VERSION = "0.13.2";
29510
+ var UPG_VERSION = "0.14.0";
29548
29511
  var UPG_FORMAT_VERSION = "0.4.0";
29549
29512
  var MARKDOWN_FORMAT_VERSION = "0.1";
29550
29513
  var UPG_TYPES = getTypes();