@unified-product-graph/core 0.12.0 → 0.12.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.d.cts CHANGED
@@ -7294,6 +7294,13 @@ declare const UPG_EDGE_CATALOG: {
7294
7294
  source_type: string;
7295
7295
  target_type: string;
7296
7296
  };
7297
+ operating_lifecycle_defined_by_specification: {
7298
+ forward_verb: string;
7299
+ reverse_verb: string;
7300
+ classification: "semantic";
7301
+ source_type: string;
7302
+ target_type: string;
7303
+ };
7297
7304
  operating_lifecycle_contains_operating_stage: {
7298
7305
  forward_verb: string;
7299
7306
  reverse_verb: string;
@@ -7474,7 +7481,7 @@ interface UPGProduct {
7474
7481
  /** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
7475
7482
  type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
7476
7483
  /** The set of valid cross-product relationship types */
7477
- type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value';
7484
+ type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage';
7478
7485
  /**
7479
7486
  * Runtime-checkable list of valid cross-product edge types. Mirrors
7480
7487
  * `UPGCrossEdgeType` for use in validators and writers that need to test
@@ -18384,17 +18391,14 @@ interface PrimitiveProperties {
18384
18391
  *
18385
18392
  * @example
18386
18393
  * const properties: OperatingLifecycleProperties = {
18387
- * label: 'Sanity Content Operations',
18388
18394
  * cyclic: true,
18389
18395
  * source: 'Sanity official 5-stage content-ops lifecycle',
18390
18396
  * }
18391
18397
  */
18392
18398
  interface OperatingLifecycleProperties {
18393
- /** Human-readable name of the operating process. */
18394
- label?: string;
18395
- /** True if the process loops (e.g. Analyze → Extend → Plan). Rendered linearly by `stage_order` with the wrap on the final stage's `next_stage`. */
18399
+ /** True if the process loops (e.g. Analyze → Extend → Plan). The sequence is fully expressed by the stages' `stage_order`; `cyclic` adds the wrap from the last stage back to the first. */
18396
18400
  cyclic?: boolean;
18397
- /** Origin of the canonical model (e.g. "Sanity official content-ops lifecycle"). */
18401
+ /** Origin of the canonical model (e.g. "Sanity official content-ops lifecycle"). Optional provenance; promote to an edge if it names a real `specification`/`document`. */
18398
18402
  source?: string;
18399
18403
  }
18400
18404
  /** An operating_stage: one ordered stage of an `operating_lifecycle`. A product's
@@ -18404,24 +18408,16 @@ interface OperatingLifecycleProperties {
18404
18408
  * @example
18405
18409
  * const properties: OperatingStageProperties = {
18406
18410
  * stage_order: 1,
18407
- * label: 'Create & Manage',
18408
18411
  * goal: 'Model, create, and review content',
18409
- * os_analogy: 'The shell / GUI + file formats',
18410
18412
  * }
18411
18413
  */
18412
18414
  interface OperatingStageProperties {
18413
- /** Ordered position within the lifecycle, 0-indexed. */
18415
+ /** Ordered position within the lifecycle, 0-indexed. The source of truth for sequence (pairs with `phase_order`/`step_order`/`action_order`). */
18414
18416
  stage_order?: number;
18415
- /** Human-readable stage name. */
18416
- label?: string;
18417
18417
  /** What this stage accomplishes. */
18418
18418
  goal?: string;
18419
- /** Role that owns the stage (free-text role label). */
18419
+ /** Role that owns the stage (free-text role label). Optional; promote to a `node_owned_by_role` edge if ownership must be queryable across stages. */
18420
18420
  owner_role?: string;
18421
- /** The Content-OS analogy from the source volume (e.g. "Drivers + daemons / cron"). */
18422
- os_analogy?: string;
18423
- /** Label of the next stage; on the final stage of a cyclic lifecycle this carries the wrap. */
18424
- next_stage?: string;
18425
18421
  }
18426
18422
 
18427
18423
  /**
@@ -21826,7 +21822,7 @@ declare function isCanonical(text: string): boolean;
21826
21822
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21827
21823
  * The `check:version-lockstep` gate enforces this at release time.
21828
21824
  */
21829
- declare const UPG_VERSION: "0.12.0";
21825
+ declare const UPG_VERSION: "0.12.2";
21830
21826
  /**
21831
21827
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21832
21828
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.d.ts CHANGED
@@ -7294,6 +7294,13 @@ declare const UPG_EDGE_CATALOG: {
7294
7294
  source_type: string;
7295
7295
  target_type: string;
7296
7296
  };
7297
+ operating_lifecycle_defined_by_specification: {
7298
+ forward_verb: string;
7299
+ reverse_verb: string;
7300
+ classification: "semantic";
7301
+ source_type: string;
7302
+ target_type: string;
7303
+ };
7297
7304
  operating_lifecycle_contains_operating_stage: {
7298
7305
  forward_verb: string;
7299
7306
  reverse_verb: string;
@@ -7474,7 +7481,7 @@ interface UPGProduct {
7474
7481
  /** Product lifecycle stages. Covers the full arc from napkin idea to end-of-life. */
7475
7482
  type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' | 'growth' | 'mature' | 'maintenance' | 'sunset';
7476
7483
  /** The set of valid cross-product relationship types */
7477
- type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value';
7484
+ type UPGCrossEdgeType = 'shares_persona' | 'shares_competitor' | 'shares_metric' | 'depends_on_product' | 'cannibalises' | 'succeeds' | 'hosts' | 'contributes_to' | 'instance_of' | 'area_serves_persona' | 'area_targets_market_segment' | 'rolls_up_to' | 'product_implements_specification' | 'product_exposes_specification' | 'feature_conforms_to_specification' | 'api_contract_speaks_specification' | 'product_exposes_primitive' | 'feature_manipulates_primitive' | 'primitive_stored_as_data_type' | 'feature_rivals_competitor_feature' | 'competitor_signal_maps_to_feature' | 'competitor_signal_surfaces_opportunity' | 'competitor_classified_as_classification_value' | 'node_classified_as_classification_value' | 'journey_phase_realises_operating_stage';
7478
7485
  /**
7479
7486
  * Runtime-checkable list of valid cross-product edge types. Mirrors
7480
7487
  * `UPGCrossEdgeType` for use in validators and writers that need to test
@@ -18384,17 +18391,14 @@ interface PrimitiveProperties {
18384
18391
  *
18385
18392
  * @example
18386
18393
  * const properties: OperatingLifecycleProperties = {
18387
- * label: 'Sanity Content Operations',
18388
18394
  * cyclic: true,
18389
18395
  * source: 'Sanity official 5-stage content-ops lifecycle',
18390
18396
  * }
18391
18397
  */
18392
18398
  interface OperatingLifecycleProperties {
18393
- /** Human-readable name of the operating process. */
18394
- label?: string;
18395
- /** True if the process loops (e.g. Analyze → Extend → Plan). Rendered linearly by `stage_order` with the wrap on the final stage's `next_stage`. */
18399
+ /** True if the process loops (e.g. Analyze → Extend → Plan). The sequence is fully expressed by the stages' `stage_order`; `cyclic` adds the wrap from the last stage back to the first. */
18396
18400
  cyclic?: boolean;
18397
- /** Origin of the canonical model (e.g. "Sanity official content-ops lifecycle"). */
18401
+ /** Origin of the canonical model (e.g. "Sanity official content-ops lifecycle"). Optional provenance; promote to an edge if it names a real `specification`/`document`. */
18398
18402
  source?: string;
18399
18403
  }
18400
18404
  /** An operating_stage: one ordered stage of an `operating_lifecycle`. A product's
@@ -18404,24 +18408,16 @@ interface OperatingLifecycleProperties {
18404
18408
  * @example
18405
18409
  * const properties: OperatingStageProperties = {
18406
18410
  * stage_order: 1,
18407
- * label: 'Create & Manage',
18408
18411
  * goal: 'Model, create, and review content',
18409
- * os_analogy: 'The shell / GUI + file formats',
18410
18412
  * }
18411
18413
  */
18412
18414
  interface OperatingStageProperties {
18413
- /** Ordered position within the lifecycle, 0-indexed. */
18415
+ /** Ordered position within the lifecycle, 0-indexed. The source of truth for sequence (pairs with `phase_order`/`step_order`/`action_order`). */
18414
18416
  stage_order?: number;
18415
- /** Human-readable stage name. */
18416
- label?: string;
18417
18417
  /** What this stage accomplishes. */
18418
18418
  goal?: string;
18419
- /** Role that owns the stage (free-text role label). */
18419
+ /** Role that owns the stage (free-text role label). Optional; promote to a `node_owned_by_role` edge if ownership must be queryable across stages. */
18420
18420
  owner_role?: string;
18421
- /** The Content-OS analogy from the source volume (e.g. "Drivers + daemons / cron"). */
18422
- os_analogy?: string;
18423
- /** Label of the next stage; on the final stage of a cyclic lifecycle this carries the wrap. */
18424
- next_stage?: string;
18425
18421
  }
18426
18422
 
18427
18423
  /**
@@ -21826,7 +21822,7 @@ declare function isCanonical(text: string): boolean;
21826
21822
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21827
21823
  * The `check:version-lockstep` gate enforces this at release time.
21828
21824
  */
21829
- declare const UPG_VERSION: "0.12.0";
21825
+ declare const UPG_VERSION: "0.12.2";
21830
21826
  /**
21831
21827
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21832
21828
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.js CHANGED
@@ -3029,6 +3029,9 @@ var UPG_EDGE_CATALOG = {
3029
3029
  specification_competes_with_specification: { forward_verb: "competes_with", reverse_verb: "competes_with", classification: "semantic", source_type: "specification", target_type: "specification" },
3030
3030
  primitive_defined_by_specification: { forward_verb: "defined_by", reverse_verb: "defines", classification: "semantic", source_type: "primitive", target_type: "specification" },
3031
3031
  primitive_composes_primitive: { forward_verb: "composes", reverse_verb: "composed_by", classification: "hierarchy", source_type: "primitive", target_type: "primitive" },
3032
+ // A canonical specification defines the operating lifecycle (mirrors primitive_defined_by_specification),
3033
+ // so the lifecycle is governed rather than a standalone root (0.12.1 refinement).
3034
+ operating_lifecycle_defined_by_specification: { forward_verb: "defined_by", reverse_verb: "defines", classification: "semantic", source_type: "operating_lifecycle", target_type: "specification" },
3032
3035
  operating_lifecycle_contains_operating_stage: { forward_verb: "contains", reverse_verb: "belongs_to", classification: "hierarchy", source_type: "operating_lifecycle", target_type: "operating_stage" },
3033
3036
  // Stewardship: a registry specification is governed by a (registry-hostable) organization (0.9.13).
3034
3037
  specification_governed_by_organization: { forward_verb: "governed_by", reverse_verb: "governs", classification: "semantic", source_type: "specification", target_type: "organization" },
@@ -3120,7 +3123,8 @@ var UPG_CROSS_EDGE_TYPES = [
3120
3123
  "competitor_signal_maps_to_feature",
3121
3124
  "competitor_signal_surfaces_opportunity",
3122
3125
  "competitor_classified_as_classification_value",
3123
- "node_classified_as_classification_value"
3126
+ "node_classified_as_classification_value",
3127
+ "journey_phase_realises_operating_stage"
3124
3128
  ];
3125
3129
  var REGISTRY_PRODUCT_ID = "registry";
3126
3130
 
@@ -11698,18 +11702,14 @@ var UPG_PROPERTY_SCHEMA = {
11698
11702
  },
11699
11703
  // OperatingLifecycleProperties: a canonical ordered (often cyclic) operating process products' journey phases map onto.
11700
11704
  operating_lifecycle: {
11701
- label: { type: "string", description: "Human-readable name of the operating process." },
11702
- cyclic: { type: "boolean", description: "True if the process loops (e.g. Analyze \u2192 Extend \u2192 Plan). Rendered linearly by stage_order with the wrap on the final stage." },
11703
- source: { type: "string", description: 'Origin of the canonical model (e.g. "Sanity official content-ops lifecycle").' }
11705
+ cyclic: { type: "boolean", description: "True if the process loops (e.g. Analyze \u2192 Extend \u2192 Plan). The sequence is expressed by the stages' stage_order; cyclic adds the wrap from last stage back to first." },
11706
+ source: { type: "string", description: 'Origin of the canonical model (e.g. "Sanity official content-ops lifecycle"). Optional provenance; promote to an edge if it names a real specification/document.' }
11704
11707
  },
11705
11708
  // OperatingStageProperties: one ordered stage of an operating_lifecycle.
11706
11709
  operating_stage: {
11707
- stage_order: { type: "number", description: "Ordered position within the lifecycle, 0-indexed." },
11708
- label: { type: "string", description: "Human-readable stage name." },
11710
+ stage_order: { type: "number", description: "Ordered position within the lifecycle, 0-indexed. Source of truth for sequence." },
11709
11711
  goal: { type: "string", description: "What this stage accomplishes." },
11710
- owner_role: { type: "string", description: "Role that owns the stage (free-text role label)." },
11711
- os_analogy: { type: "string", description: 'The Content-OS analogy from the source volume (e.g. "Drivers + daemons / cron").' },
11712
- next_stage: { type: "string", description: "Label of the next stage; on the final stage of a cyclic lifecycle this carries the wrap." }
11712
+ owner_role: { type: "string", description: "Role that owns the stage (free-text role label). Optional; promote to a node_owned_by_role edge if ownership must be queryable." }
11713
11713
  },
11714
11714
  // PrivacyPolicyProperties: Privacy policy.
11715
11715
  privacy_policy: {
@@ -28381,6 +28381,7 @@ var UPG_REGIONS = [
28381
28381
  "specification_competes_with_specification",
28382
28382
  "primitive_defined_by_specification",
28383
28383
  "primitive_composes_primitive",
28384
+ "operating_lifecycle_defined_by_specification",
28384
28385
  "operating_lifecycle_contains_operating_stage"
28385
28386
  ],
28386
28387
  boundary_edges: [
@@ -28920,7 +28921,7 @@ function isCanonical(text) {
28920
28921
  }
28921
28922
 
28922
28923
  // src/index.ts
28923
- var UPG_VERSION = "0.12.0";
28924
+ var UPG_VERSION = "0.12.2";
28924
28925
  var UPG_FORMAT_VERSION = "0.4.0";
28925
28926
  var MARKDOWN_FORMAT_VERSION = "0.1";
28926
28927
  var UPG_TYPES = getTypes();